VPN ga tayanmasdan Android ilovalarida ochiq matnni bloklang
Yuklamadagi ochiq matn va yoʻldagi ochiq matn ikki xil muammo. Birinchisini ilovada, ikkinchisini tunnel yoki qurilma siyosati bilan hal qiling.
Android da ochiq matnni bloklash deb ikki butunlay boshqa narsaga aytiladi. Biri ilova ichidagi siyosat boʻlib, oʻzining tarmoq stekiga oddiy HTTP ni rad etishni buyuradi. Ikkinchisi qurilma darajasidagi tartib boʻlib, telefondagi hamma narsani bir vaqtda himoya qilishga urinadi, odatda trafikni VPN orqali oʻtkazadi. Ular turli muammolarni hal qiladi, va ikkinchisi birinchisini tuzata olmaydi: tunnel telefon va chiqish orasidagi qismni himoya qiladi, HTTP gapiradigan ilova esa oʻsha chiqishning narigi tomonidagi hamma narsa bilan hanuz HTTP gapiradi.
Bitta nom ostida ikkita muammo
Birinchi muammo — yuklama: ilova hisob maʼlumotlari yoki tokenlarni uchidan uchiga shifrlanmagan soʻrovga yozadi, shuning uchun uni koʻra oladigan har bir sakrash oʻqiy oladi. Ikkinchisi — yoʻl: ilova mutlaqo toʻgʻri boʻlishi mumkin, va siz baribir mahalliy Wi-Fi operatori qayerga ulanayotganini bilmasligini xohlaysiz. VPN ikkinchisini va faqat ikkinchisini hal qiladi.
Bu farq tuzatishning egasini belgilaydi. Yuklama ilovani yetkazib beruvchiga tegishli, chunki qaysi URL chaqirilishi va sertifikat tekshirilishini faqat shu kod hal qiladi. Yoʻl qurilma yoki tarmoqqa tegishli, chunki gap paketlar qayerga ketishida, ular nima saqlashida emas.
Birinchi yoʻl: siz boshqaradigan ilova
Agar ilovani siz yetkazib bersangiz, tuzatish transport qarori va uni amalga oshiruvchi siyosatdir. Har bir soʻnggi nuqtani HTTPS ga yoʻnaltiring, host nomi va sertifikat tekshiruvini yoniq holda qoldiring va oddiy HTTP ga qaytish yoʻlini bitta konfiguratsiya bayrogʻi uzoqlikda qoldirish oʻrniga oʻchirib tashlang. Qayta yoʻnaltirish bu yerda yordam bermaydi: 301 oladigan HTTP soʻrovi sarlavhalari va tanasini allaqachon ochiq yuborgan, shuning uchun hisob maʼlumotlari qayta yoʻnaltirish ularni himoya qiladi degan taxmin bilan hech qachon yurmasligi kerak.
Android 7.0 va undan keyin siyosatni Network Security Configuration ifodalaydi. Quyidagi fayl eng kichik foydali versiya: domenga xos istisno boshqacha aytmasa, u hamma joyda ochiq matnni rad etadi.
<network-security-config>
<base-config cleartextTrafficPermitted="false" />
</network-security-config>Manifestdan oʻsha resursga havola qiling, soʻngra yetkazib berishdan oldin allaqachon mavjud istisnolarni oʻqing. Eski disk raskadrovka domeni yoki toʻlov provayderining SDK yozuvi siz himoya qilmoqchi boʻlgan host uchun ochiq matnga jimgina yana ruxsat berishi mumkin.
Versiyaning ikki tafsilotini bilish arziydi. API 28 yoki undan yangiroqni nishonga olgan ilovalar ochiq matnni allaqachon standart boʻyicha rad etadi, shuning uchun hali ham oddiy HTTP gapiradigan ilova yo eski API darajasini nishonga oladi, yo biror joyda istisnosi bor. Va tarmoq xavfsizligi konfiguratsiyasi mavjud boʻlganda, eski android:usesCleartextTraffic manifest atributi bu savolni endi hal qilmaydi, shuning uchun oʻsha bayroqni oʻzgartirish baʼzan hech narsa qilmayotgandek koʻrinadi.
Ikkinchi yoʻl: siz boshqarmaydigan ilova
Oʻrnatilgan uchinchi tomon ilovasi uchun uning xavfsizlik konfiguratsiyasini foydalanuvchi sozlamasi bilan qayta yozib boʻlmaydi. Real variantlar — mahsulotning oʻz xavfsiz ulanish boshqaruvlari, allaqachon TLS ishlatadigan qoʻllab-quvvatlanadigan alternativa yoki qurilma nimalarni ishga tushirishi mumkinligini cheklovchi boshqariladigan qurilma siyosati. Bular har xil majburiyatlar, va faqat uchinchisi qurilmalar parkiga tarqaladi.
Tarmoq qoidalari koʻringanidan kuchsizroq oʻrinbosarlar. Faqat 443 portiga ruxsat berish autentifikatsiyalangan TLS ni talab qilmaydi, chunki koʻplab ochiq matn protokollarini oʻsha portga koʻchirish mumkin, 80 portini bloklash esa boshqa portlardagi ochiq matnni qoplamaydi. Brauzerning faqat-HTTPS rejimi ham oʻsha brauzer bilan cheklangan, xuddi shu telefondagi alohida pochta yoki chat ilovasiga emas.
Trafik shifrlangan koʻrinishi uchun intertseptsiya sertifikatini oʻrnatish — ishonch oʻzgarishi, tuzatish emas. U ilovaning server autentifikatsiyasini sizinkiga almashtiradi, va boshidan sertifikatlarni tekshirmagan ilova bu bilan tuzatilmaydi; siz faqat oqimni kim oʻqiy olishini koʻchirdingiz.
VPN qayerda yordam beradi va qayerda yoʻq
Tunnel — mahalliy tarmoq ulanish haqida hech narsa bilmasligi yoki ilova boshqa yoʻl bilan yetib boʻlmaydigan xususiy xizmatga yetishi talab qilinganda toʻgʻri asbob. HTTP mijozi HTTPS gapirishi uchun bu notoʻgʻri asbob, chunki soʻrov tunneldan kirganidek chiqadi.
Android amaliy cheklov qoʻshadi: platforma bir vaqtda faqat bitta VPN xizmatini ishga tushiradi. Oʻsha joyni egallagan mahalliy filtrlovchi ilova sizga haqiqatan kerak boʻlgan masofaviy tunnel bilan raqobatlashadi, va ular orasida almashish ilova emas, qurilma darajasidagi amaldir. Oʻsha bitta joy yuklama siyosatini ilovada saqlash va tunnelni yoʻl uchun qoldirishning yaxshi sababidir.
Ikkalasi ustma-ust tushadigan yagona holat — oʻzingiz ham boshqaradigan xususiy server. U yerda tunnel protokol hali ochiq matn boʻlsa ham yoʻlni xususiy qila oladi, bu taʼsirni kamaytiradi, lekin yuklama nima ekanini oʻzgartirmaydi. Buni xavfni kamaytirish deb qabul qiling, maʼlumotlarni shifrlash deb emas.
Bloklangan deb atashdan oldin nimalarni sinash kerak
Odamlarni hayratlantiradigan standartdan boshlang: API 28 yoki undan yangiroqni nishonga olgan ilova ochiq matnni allaqachon rad etishi kerak, shuning uchun standartni takrorlaydigan konfiguratsiya qoʻshishdan oldin maqsad darajasini tekshiring. Soʻngra muvaffaqiyatsizlik holatini ataylab sinang: oddiy HTTP hostga soʻrov zaxira yoʻl orqali jimgina muvaffaqiyat qozonish oʻrniga muvaffaqiyatsiz boʻlishi kerak.
adb shell dumpsys package com.example.app | grep -E 'targetSdk|versionName'
adb logcat | grep -i cleartextMuvaffaqiyat holati uchun HTTPS chaqiruvi haqiqiy sertifikatlar zanjirini tekshirishini va ishonchsiz sertifikatli proksi toqat qilinmasdan rad etilishini tasdiqlang. Har qanday sertifikat bilan muvaffaqiyat qozonadigan qoʻl berishish transport xavfsizligi haqida hech narsani isbotlamagan.
Uchinchi tomon ilovasi uchun haqiqatan amalga oshira oladigan chegarani yozing — boshqariladigan qurilma siyosati, tarmoq qoidasi yoki hech narsa — va uni qabul mezonlarida ayting. Android xavfsizlik konfiguratsiyasi qoʻllanmasi platforma standartlarini va qaysi komponentlar siyosatga rioya qilishini sanab oʻtadi, va konfiguratsiyangiz umuman biror narsa qilishini aynan shu qism hal qiladi.