Dy gjëra krejt të ndryshme quhen bllokim i tekstit të thjeshtë në Android. Njëra është një politikë brenda aplikacionit që urdhëron stivën e vet të rrjetit të refuzojë HTTP të thjeshtë. Tjetra është një rregullim në nivel pajisjeje që përpiqet të mbrojë gjithçka në telefon përnjëherë, zakonisht duke i drejtuar trafikun përmes një VPN. Ato zgjidhin probleme të ndryshme, dhe e dyta nuk mund të rregullojë të parën: një tunel mbron segmentin midis telefonit dhe daljes, ndërsa një aplikacion që flet HTTP vazhdon të flasë HTTP me gjithçka që ndodhet përtej asaj daljeje.

Dy probleme nën një emër

Problemi i parë është ngarkesa: aplikacioni shkruan kredenciale ose shenja në një kërkesë që nuk është e kriptuar nga fillimi në fund, kështu që çdo hop që mund ta shohë mund ta lexojë. I dyti është rruga: aplikacioni mund të jetë krejt i saktë, dhe ju prapë dëshironi që operatori lokal i Wi-Fi të mos mësojë asgjë për vendin ku lidhet. Një VPN trajton të dytin dhe vetëm të dytin.

Ky dallim përcakton kujt i takon rregullimi. Ngarkesa i takon atij që e shpërndan aplikacionin, sepse vetëm ai kod vendos cila URL thirret dhe nëse vërtetohet një certifikatë. Rruga i takon pajisjes ose rrjetit, sepse bëhet fjalë për ku udhëtojnë paketat, jo për çfarë përmbajnë.

Rruga e parë: aplikacioni që ju kontrolloni

Nëse ju e shpërndani aplikacionin, rregullimi është një vendim transporti plus një politikë që e zbaton atë. Drejtojeni çdo pikë fundore në HTTPS, mbani aktiv vërtetimin e emrit të strehuesit dhe të certifikatës, dhe fshini kthimin te HTTP i thjeshtë në vend që ta lini një flamur konfigurimi larg. Ridrejtimi nuk ndihmon këtu: një kërkesë HTTP që merr një 301 i ka dërguar tashmë titujt dhe trupi haptas, prandaj kredencialet nuk duhet të udhëtojnë kurrë duke supozuar se ridrejtimi do t'i mbrojë.

Nga Android 7.0 e në vazhdim, Network Security Configuration shpreh politikën. Skedari më poshtë është versioni më i vogël i dobishëm: refuzon tekstin e thjeshtë kudo, përveç nëse një përjashtim specifik për domenin thotë ndryshe.

<network-security-config>
    <base-config cleartextTrafficPermitted="false" />
</network-security-config>

Referojuni atij burimi nga manifesti, pastaj lexoni përjashtimet që ekzistojnë tashmë përpara se ta shpërndani. Një domen i vjetër korrigjimi ose një zë SDK e një ofruesi pagesash mund të lejojë përsëri në heshtje tekstin e thjeshtë për strehuesin që po përpiqeshit të mbronit.

Dy hollësi versioni ia vlen t'i dini. Aplikacionet që synojnë API 28 ose më të ri refuzojnë tashmë tekstin e thjeshtë si parazgjedhje, kështu që një aplikacion që flet ende HTTP të thjeshtë ose synon një nivel më të vjetër API ose ka një përjashtim diku. Dhe kur ka një konfigurim sigurie rrjeti, atributi më i vjetër i manifestit android:usesCleartextTraffic nuk e vendos më çështjen, dhe për këtë arsye ndryshimi i atij flamuri ndonjëherë duket se nuk bën asgjë.

Rruga e dytë: aplikacioni që nuk e kontrolloni

Për një aplikacion të palës së tretë të instaluar nuk mund ta rishkruani konfigurimin e tij të sigurisë me një rregullim përdoruesi. Opsionet realiste janë kontrollet e vetë produktit për lidhje të sigurt, një alternativë e mirëmbajtur që përdor tashmë TLS, ose një politikë e një pajisjeje të menaxhuar që kufizon çfarë pajisja mund të ekzekutojë. Këto janë angazhime të ndryshme, dhe vetëm e treta shkallëzohet në një flotë.

Rregullat e rrjetit janë zëvendësues më të dobët nga sa duken. Lejimi vetëm i portit 443 nuk imponon TLS të vërtetuar, sepse shumë protokolle teksti të thjeshtë mund të zhvendosen në atë port, dhe bllokimi i portit 80 nuk mbulon tekstin e thjeshtë në porta të tjera. Edhe modaliteti vetëm-HTTPS i një shfletuesi kufizohet te ai shfletues, jo te një aplikacion i veçantë poste ose bisede në të njëjtin telefon.

Instalimi i një certifikate përgjimi që trafiku të duket i kriptuar është një ndryshim besimi, jo një rregullim. Ai zëvendëson vërtetimin e serverit të aplikacionit me tuajin, dhe një aplikacion që nuk vërtetonte certifikata që në fillim nuk rregullohet me kaq; thjesht keni zhvendosur kush mund ta lexojë rrjedhën.

Ku ndihmon një VPN dhe ku jo

Një tunel është mjeti i duhur kur kërkesa është që rrjeti lokal të mos mësojë asgjë për lidhjen, ose që aplikacioni të arrijë një shërbim privat që ndryshe nuk e arrin. Është mjeti i gabuar për ta bërë një klient HTTP të flasë HTTPS, sepse kërkesa e lë tunelin pikërisht ashtu siç hyri.

Android shton një kufizim praktik: platforma ekzekuton vetëm një shërbim VPN në një kohë. Një aplikacion lokal filtrimi që zë atë vend konkurron me tunelin në distancë që ju nevojitet vërtet, dhe kalimi midis tyre është veprim në nivel pajisjeje, jo aplikacioni. Ai vend i vetëm është arsye e mirë për ta mbajtur politikën e ngarkesës në aplikacion dhe për ta rezervuar tunelin për rrugën.

Rasti i vetëm kur të dy mbivendosen është një server privat që edhe ju e administroni. Atje një tunel mund ta bëjë rrugën private edhe pse protokolli është ende tekst i thjeshtë, gjë që zvogëlon ekspozimin por nuk ndryshon çfarë është ngarkesa. Trajtojeni atë si zvogëlim rreziku, jo si kriptim të dhënash.

Çfarë të provoni përpara se ta quani të bllokuar

Filloni me parazgjedhjen që i befason njerëzit: një aplikacion që synon API 28 ose më të ri duhet të refuzojë tashmë tekstin e thjeshtë, prandaj kontrolloni nivelin e synuar përpara se të shtoni konfigurim që dublon një parazgjedhje. Më pas provoni me qëllim rastin e dështimit: një kërkesë drejt një strehuesi HTTP të thjeshtë duhet të dështojë, jo të ketë sukses në heshtje përmes një kthimi.

adb shell dumpsys package com.example.app | grep -E 'targetSdk|versionName'
adb logcat | grep -i cleartext

Për rastin e suksesit, konfirmoni që thirrja HTTPS vërteton një zinxhir të vërtetë certifikatash dhe që një përfaqësues me certifikatë të pabesuar refuzohet në vend që të tolerohet. Një shtrëngim duarsh që ka sukses kundër çdo certifikate nuk ka provuar asgjë për sigurinë e transportit.

Për një aplikacion të palës së tretë, shkruani kufirin që vërtet mund të impononi, qoftë një politikë e një pajisjeje të menaxhuar, një rregull rrjeti apo asgjë, dhe thojeni atë në kriteret e pranimit. Udhëzuesi i konfigurimit të sigurisë së Android liston parazgjedhjet e platformës dhe cilët komponentë e respektojnë politikën, dhe pikërisht ai pjesë vendos nëse konfigurimi juaj bën fare diçka.

Artikuj të ngjashëm