O ṣe àgbéjáde bíldì tuntun, o kó lọ sí VPN, ojú-ìwé kan náà sì dúró ṣinṣin kò gbé wọlé mọ́. Ní Android 9 àti lẹ́yìn, àlàyé tó wọ́pọ̀ jùlọ kò dùn mọ́: pẹtẹ́lì kọ̀ HTTP tẹ́lẹ̀ fún àwọn àpòpọ̀ tí wọ́n ń gbèrú API 28 tàbí jù bẹ́ẹ̀ lọ, VPN sì yí ipò tó tó láti fi í hàn. Àṣìṣe tí o rí gbára lé oníbàárà HTTP, ìdí nìyẹn tí kò fi máa ń sọ cleartext.

Kí ni ìkùnà yìí ní ti gidi

Láti Android 9, pẹtẹ́lì ń dènà cleartext ní àkọ́kọ́ ní kété tí àpòpọ̀ bá gbèrú ìpele API 28 tàbí jù bẹ́ẹ̀ lọ. Ìbéèrè sí àdírẹ́sì HTTP tẹ́lẹ̀ ni pẹtẹ́lì kọ̀ kí pákẹ́tì kan tilẹ̀ kúrò nínú ẹ̀rọ náà. Àṣìṣe wo ni wàá rí gbára lé ilé-ìkàwé HTTP: nígbà míì ìkùnà nẹ́tíwọ́kì gbogbogbò, nígbà míì àkókò tó parí, nígbà míì ìfiránṣẹ́ tí ń dárúkọ cleartext ní tààràtà. Ohun tí kò ṣe láé ni dé ọ̀dọ̀ sẹ́fà rẹ. Android ṣàkọsílẹ̀ àkọ́kọ́ àti àfidípò tí ó ní ààlà ẹkùn nínú ìtọ́nisọ́nà ìṣètò ààbò rẹ̀.

Aṣàwákiri lórí ẹ̀rọ kan náà ṣì lè gbé ojú-ìwé náà wọlé, ìyẹn sì ni àmì tí ọ̀pọ̀ ènìyàn ń pàdánù. Àwọn aṣàwákiri kò wà lábẹ́ ìlànà ààbò nẹ́tíwọ́kì àpòpọ̀ rẹ.

Ìdí tí wọ́n fi ń dá VPN lẹ́bi

Nígbà gbogbo ohun mẹ́ta ń yí padà lẹ́ẹ̀kan náà. Àpòpọ̀ lè yanjú orúkọ olùgbàlejò mìíràn lẹ́yìn tí VPN bá so mọ́, ẹ̀rọ lè jẹ́ tuntun pẹ̀lú bíldì tuntun, tàbí bíldì fúnra rẹ̀ lè ti lọ sí ìpele API àfojúsùn tí ń mú àkọ́kọ́ ṣiṣẹ́. VPN hàn, SDK àfojúsùn kò hàn, nítorí náà VPN gba tíkẹ́ẹ̀tì.

Fi ìpele àfojúsùn bíldì àtijọ́ àti tuntun wé kí o tó fi ọwọ́ kan ìṣètò nẹ́tíwọ́kì. Àpòpọ̀ tí ń gbèrú 27 tàbí kéré sí i ni a yọ̀ǹda fún, ìyẹn sì ṣàlàyé gbogbo ìròyìn irú «ó ń ṣiṣẹ́ lórí fọ́nù àtijọ́ mi».

Ibó ni àmì Expo ń bọ́ sí ní tòótọ́

Nínú iṣẹ́ Expo tí a ń ṣàkóso, fífi ètò kún app.json kò ṣàtúnṣe manifest Android, nítorí prebuild àti àwọn bíldì ìdàgbàsókè ni wọ́n ń ṣe manifest náà. Ètò àfikún ni ó ń kọ ètò náà ní ìpele yẹn. Ọ̀nà tí a ti ń ṣe àtìlẹ́yìn ni expo-build-properties, tí a ṣètò nínú ìṣètò àpòpọ̀ pẹ̀lú àṣàyàn cleartext lábẹ́ android.

{
  "plugins": [
    ["expo-build-properties", {
      "android": { "usesCleartextTraffic": true }
    }]
  ]
}

Ẹ̀ka ọ̀rọ̀ náà ń ṣètò àṣàyàn àfikún nìkan; a ń ṣe manifest náà nígbà tó yá. Ṣe prebuild tàbí bíldì oníbàárà ìdàgbàsókè tuntun, lẹ́yìn náà kí o tó tún dán wò, yẹ AndroidManifest.xml tí a ṣe wò fún android:usesCleartextTraffic, nítorí àtúgbé wọlé JS nìkan ń pa manifest àtijọ́ mọ́. Fi ẹ̀yà àfikún bá Expo SDK tí iṣẹ́ náà ń ṣiṣẹ́ lórí mu. Àwọn àṣàyàn àfikún ń yí padà láàrín àwọn ìgbéjáde, ẹ̀ka tí a dà kọ láti SDK mìíràn sì jẹ́ orísun tó gbẹ́kẹ̀lé fún àìṣe nǹkan ní ìdákẹ́jẹ́.

Ìṣàn bare àti àṣàyàn tó dín

Fún bare React Native, ohun tó dọ́gba ni android:usesCleartextTraffic lórí ẹ̀yà application, tàbí ìṣètò ààbò nẹ́tíwọ́kì tí ń gba cleartext láàyè fún àwọn ẹkùn tí a dárúkọ nìkan. Fọ́ọ̀mù tí ó ní ààlà ẹkùn ni ó yẹ kí a yàn, nítorí ó ń gba API inú láàyè, ó sì ń fi gbogbo ohun mìíràn sílẹ̀ lórí HTTPS. Ó tún ṣàkọsílẹ̀ àkójọ àwọn ìyọ̀ǹda rẹ̀ fúnra rẹ̀, ìyẹn sì ni apá tí olùgbéwò yóò béèrè nípa rẹ̀.

Kò sí ọ̀kan nínú àwọn ọ̀nà méjèèjì tí ń yí àkọ́kọ́ pẹtẹ́lì padà fún ohunkóhun tí o kò dárúkọ.

Kọ́kọ́ fi àkọsílẹ̀ ẹ̀rọ náà hàn

Kí o tó ṣàtúnṣe ìṣètò náà, gba àṣìṣe gbára náà. adb logcat lórí ẹ̀rọ tí a so mọ́ ń fi ìkọ̀ cleartext pẹtẹ́lì hàn, ó sì ń dárúkọ ẹ̀yà tí ó gbé e dìde. Sókẹ́ẹ̀tì tí a kọ̀, orúkọ tí a kò lè yanjú tàbí ìfọwọ́sọ̀wọ́ TLS tí ó kùnà ń tọ́ka sí ibòmíràn pátápátá, ṣíṣe cleartext sì máa ń sọ àpòpọ̀ di aláìlera lásán.

Lẹ́yìn náà jẹ́ kí ìgbéjáde wà ní òtítọ́. Cleartext lè ṣe fún ibi ìparí yàrá-ìdánwò tí kò lè pèsè TLS, àti fún àkókò tí ó kúrú jùlọ tí o lè ṣètò nìkan. Bí API bá lè parí TLS nínú nẹ́tíwọ́kì àdáni, fi ìwé-ẹ̀rí sínú ilé-ìpamọ́ ìgbẹ́kẹ̀lé ẹ̀rọ náà kí o sì fi cleartext pamọ́ ní àìṣiṣẹ́, nítorí tunnẹ́lì ń ṣààbò bo ọ̀nà títí dé ibi ìjáde rẹ̀, kì í ṣe ohunkóhun lẹ́yìn náà.

Ní kété tí ibi ìparí bá dáhùn lórí HTTPS, yọ àṣẹ náà kúrò, tún bíldì, kí o sì dán wò lórí VPN àti lórí Wi-Fi lasan nínú ìpàdé kan náà. Yíyanjú orúkọ lè yàtọ̀ láàrín àwọn ọ̀nà méjì yẹn, àwọn méjèèjì nìkan ni ó ń sọ fún ọ èwo ni ó ń sọ òtítọ́.

Àwọn àpilẹ̀kọ tó jọra