Vitu viwili tofauti kabisa huitwa kuzuia maandishi wazi kwenye Android. Kimoja ni sera ndani ya programu inayoiambia mrundikano wake wa mtandao kukataa HTTP ya kawaida. Kingine ni mpangilio wa ngazi ya kifaa unaojaribu kulinda kila kitu kwenye simu kwa wakati mmoja, kwa kawaida kwa kupitisha trafiki kupitia VPN. Vinatatua matatizo tofauti, na cha pili hakiwezi kurekebisha cha kwanza: handaki hulinda sehemu kati ya simu na njia ya kutoka, ilhali programu inayozungumza HTTP inaendelea kuzungumza HTTP na kila kitu kilicho ng'ambo ya njia hiyo ya kutoka.

Matatizo mawili chini ya jina moja

Tatizo la kwanza ni mzigo: programu huandika vitambulisho au tokeni kwenye ombi ambalo halijasimbwa kutoka mwanzo hadi mwisho, kwa hiyo kila hop inayoweza kuliona inaweza kulisona. La pili ni njia: programu inaweza kuwa sahihi kabisa, na bado unataka mwendeshaji wa Wi-Fi wa karibu asijue chochote kuhusu inapoungana. VPN hushughulikia la pili na la pili pekee.

Tofauti hiyo huamua mmiliki wa marekebisho. Mzigo ni wa anayesambaza programu, kwa sababu msimbo huo pekee huamua ni URL gani inaitwa na kama cheti huthibitishwa. Njia ni ya kifaa au mtandao, kwa sababu ni suala la wapi pakiti zinasafiri, si zina nini ndani.

Njia ya kwanza: programu unayoidhibiti

Ikiwa wewe ndiye unayesambaza programu, marekebisho ni uamuzi wa usafirishaji pamoja na sera inayoutekeleza. Elekeza kila ncha ya mwisho kwenye HTTPS, acha uthibitishaji wa jina la mwenyeji na cheti ukiwa umewashwa, na futa njia ya kurudi kwenye HTTP ya kawaida badala ya kuiacha alama moja ya usanidi mbali. Uelekezaji upya hausaidii hapa: ombi la HTTP linalopokea 301 tayari limeshatuma vichwa na mwili wake wazi, kwa hiyo vitambulisho havipaswi kamwe kusafiri kwa dhana kwamba uelekezaji upya utavilinda.

Kuanzia Android 7.0, Network Security Configuration huonyesha sera. Faili iliyo hapa chini ni toleo dogo zaidi linalofaa: hukataa maandishi wazi kila mahali isipokuwa ubaguzi maalum wa kikoa useme vinginevyo.

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

Rejelea rasilimali hiyo kutoka kwenye manifest, kisha soma ubaguzi zilizopo tayari kabla ya kusambaza. Kikoa cha zamani cha utatuzi au kiingilio cha SDK cha mtoa huduma wa malipo kinaweza kuruhusu tena maandishi wazi kwa utulivu kwa mwenyeji uliyekuwa ukijaribu kulinda.

Maelezo mawili ya toleo yanafaa kujulikana. Programu zinazolenga API 28 au mpya zaidi tayari hukataa maandishi wazi kwa msingi, kwa hiyo programu inayozungumza bado HTTP ya kawaida ama inalenga ngazi ya zamani ya API au ina ubaguzi mahali fulani. Na pale usanidi wa usalama wa mtandao upo, sifa ya zamani ya manifest android:usesCleartextTraffic haiamui tena swali hilo, ndiyo sababu kubadilisha bendera hiyo wakati mwingine huonekana kama hakufanyi chochote.

Njia ya pili: programu usiyoidhibiti

Kwa programu ya mtu wa tatu iliyosakinishwa huwezi kuandika upya usanidi wake wa usalama kwa mpangilio wa mtumiaji. Chaguo za kweli ni vidhibiti vya bidhaa vyenyewe vya muunganisho salama, mbadala unaotunzwa ambao tayari unatumia TLS, au sera ya kifaa kinachosimamiwa inayopunguza kile kifaa kinachoweza kuendesha. Hizi ni ahadi tofauti, na ya tatu pekee huenea hadi kundi la vifaa.

Kanuni za mtandao ni mbadala hafifu kuliko zinavyoonekana. Kuruhusu port 443 pekee hakutekelezi TLS iliyothibitishwa, kwa sababu itifaki nyingi za maandishi wazi zinaweza kuhamishwa hadi port hiyo, na kuzuia port 80 hakugharamikii maandishi wazi kwenye port nyingine. Hali ya HTTPS-pekee ya kivinjari pia imezuiwa kwa kivinjari hicho, si kwa programu tofauti ya barua pepe au gumzo kwenye simu hiyo hiyo.

Kufunga cheti cha kuingilia ili trafiki ionekane imesimbwa ni mabadiliko ya uaminifu, si marekebisho. Hubadilisha uthibitishaji wa seva wa programu na wako, na programu ambayo haikuthibitisha vyeti tangu mwanzo hairekebishwi na hilo; umehamisha tu nani anaweza kusoma mtiririko.

VPN inasaidia wapi na haisaidii wapi

Handaki ni chombo sahihi pale hitaji ni kwamba mtandao wa karibu usijue chochote kuhusu muunganisho, au programu ifikie huduma ya kibinafsi ambayo haiwezi kuifikia vinginevyo. Ni chombo kibaya cha kufanya mteja wa HTTP azungumze HTTPS, kwa sababu ombi huondoka handakini jinsi lilivyoingia.

Android huongeza kizuizi cha kiutendaji: jukwaa huendesha huduma moja ya VPN kwa wakati mmoja. Programu ya kuchuja ya ndani inayochukua nafasi hiyo hushindana na handaki la mbali unalohitaji kweli, na kubadilisha kati yao ni kitendo cha ngazi ya kifaa si cha programu. Nafasi hiyo moja ni sababu nzuri ya kuweka sera ya mzigo kwenye programu na kuhifadhi handaki kwa ajili ya njia.

Kisa pekee ambacho vyote viwili hupishana ni seva ya kibinafsi unayoendesha wewe pia. Huko handaki linaweza kufanya njia kuwa ya kibinafsi ingawa itifaki bado ni maandishi wazi, ambayo hupunguza mfiduo lakini haibadilishi mzigo ni nini. Chukulia hilo kama kupunguza hatari, si usimbaji wa data.

Nini cha kujaribu kabla ya kuiita imezuiwa

Anza na msingi unaowashangaza watu: programu inayolenga API 28 au mpya zaidi inapaswa kuwa tayari inakataa maandishi wazi, kwa hiyo angalia ngazi lengwa kabla ya kuongeza usanidi unaonakili msingi. Kisha jaribu kisa cha kushindwa kwa makusudi: ombi kwa mwenyeji wa HTTP ya kawaida lazima lishindwe badala ya kufaulu kimya kupitia njia mbadala.

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

Kwa kisa cha mafanikio, hakikisha kwamba wito wa HTTPS unathibitisha mnyororo halisi wa vyeti na kwamba proksi yenye cheti kisichoaminika hukataliwa badala ya kuvumiliwa. Kupeana mikono kunakofaulu dhidi ya cheti chochote hakujathibitisha chochote kuhusu usalama wa usafirishaji.

Kwa programu ya mtu wa tatu, andika kikomo unachoweza kwa kweli kutekeleza, kiwe sera ya kifaa kinachosimamiwa, kanuni ya mtandao au hakuna, na useme hilo katika vigezo vya kukubali. mwongozo wa usanidi wa usalama wa Android unaorodhesha msingi wa jukwaa na vipengele vipi vinavyoheshimu sera, na hiyo ndiyo sehemu inayoamua kama usanidi wako unafanya chochote kabisa.

Makala zinazohusiana