Gwnaethoch ryddhau build newydd, symud i’r VPN, a stopiodd yr un sgrin lwytho. Ar Android 9 ac wedyn yr esboniad mwy cyffredin yw’r un mwy diflas: mae’r platfform yn gwrthod HTTP plaen ar gyfer apiau sy’n targedu API 28 neu uwch, a dim ond digon o gyd-destun newidiodd y VPN i’w ddangos. Mae’r gwall a gewch yn dibynnu ar y cleient HTTP, a dyna pam mae mor anaml yn dweud cleartext.

Beth yw’r methiant mewn gwirionedd

O Android 9 ymlaen mae’r platfform yn blocio cleartext yn ddiofyn unwaith y bydd ap yn targedu lefel API 28 neu uwch. Mae’r cais i gyfeiriad HTTP plaen yn cael ei wrthod gan y platfform cyn i unrhyw becyn adael y ddyfais. Pa wall a welwch sy’n dibynnu ar y llyfrgell HTTP: weithiau methiant rhwydwaith cyffredinol, weithiau goramser, weithiau neges sy’n enwi cleartext yn ddigon plaen. Yr hyn nad yw byth yn ei wneud yw cyrraedd eich gweinydd. Mae Android yn dogfennu’r diofyn a’r dewis arall wedi’i gwmpasu gan barth yn ei ganllaw ffurfweddu diogelwch.

Gall porwr ar yr un ddyfais lwytho’r dudalen o hyd, a dyna’r cliw mae’r rhan fwyaf o bobl yn ei golli. Nid yw porwyr yn ddarostyngedig i bolisi diogelwch rhwydwaith eich ap.

Pam y beïir y VPN

Tri pheth sy’n newid fel arfer ar yr un pryd. Efallai y bydd yr ap yn datrys enw gwesteiwr gwahanol ar ôl i’r VPN gysylltu, gall y ddyfais fod yn un newydd gyda build mwy diweddar, neu efallai bod y build ei hun wedi symud i lefel API darged sy’n sbarduno’r diofyn. Mae’r VPN yn weladwy ac nid yw’r SDK targed, felly’r VPN sy’n cael y tocyn.

Cymharwch lefelau targed y build hen a newydd cyn cyffwrdd â ffurfweddiad rhwydwaith. Mae ap sy’n targedu 27 neu lai wedi’i eithrio, ac mae hynny’n esbonio pob adroddiad «mae’n gweithio ar fy ffôn hŷn».

Ble mae flag Expo yn glanio mewn gwirionedd

Mewn prosiect Expo wedi’i reoli, nid yw ychwanegu gosodiad at app.json yn golygu manifest Android, oherwydd prebuild a buildau datblygu sy’n cynhyrchu’r manifest. Ategyn ffurfweddu sy’n ysgrifennu’r gosodiad yn y cam hwnnw. Y llwybr a gefnogir yw expo-build-properties, wedi’i ffurfweddu yng nghonffig yr ap gyda’r opsiwn cleartext o dan android.

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

Dim ond opsiwn yr ategyn y mae’r darn yn ei osod; mae’r manifest yn cael ei gynhyrchu’n ddiweddarach. Rhedwch prebuild neu build cleient datblygu newydd, yna archwiliwch yr AndroidManifest.xml a gynhyrchwyd am android:usesCleartextTraffic cyn ailbrofi, oherwydd mae ail-lwytho JS yn unig yn cadw’r hen manifest. Cydweddwch fersiwn yr ategyn â’r Expo SDK y mae’r prosiect yn rhedeg arno. Mae opsiynau ategyn yn symud rhwng fersiynau, ac mae darn wedi’i gopïo o SDK gwahanol yn ffynhonnell ddibynadwy o no-opiau distaw.

Y llif bare a’r opsiwn culach

Ar gyfer bare React Native y cyfwerth yw android:usesCleartextTraffic ar elfen application, neu ffurfweddiad diogelwch rhwydwaith sy’n caniatáu cleartext ar gyfer parthau a enwir yn unig. Y ffurf wedi’i chwmpasu gan barth yw’r un i’w ffafrio, oherwydd mae’n caniatáu’r API mewnol ac yn gadael popeth arall ar HTTPS. Mae hefyd yn dogfennu ei restr eithriadau ei hun, a dyna’r rhan y bydd adolygydd yn gofyn amdani.

Nid yw’r un o’r ddau ddull yn newid diofyn y platfform ar gyfer unrhyw beth na wnaethoch ei enwi.

Profwch hi o log y ddyfais yn gyntaf

Cyn golygu ffurfweddiad, cewch y methiant union. Mae adb logcat ar ddyfais gysylltiedig yn dangos gwrthodiad cleartext y platfform ac yn enwi’r gydran a’i cododd. Mae soced wedi’i gwrthod, enw na fydd yn datrys neu handshake TLS wedi methu’n cyfeirio i rywle hollol wahanol, a dim ond gwanhau’r ap yn ofer fyddai galluogi cleartext.

Yna cadwch gynhyrchu’n onest. Mae cleartext yn dderbyniol ar gyfer pwynt labordy na all gynnig TLS, a dim ond am y cyfnod byrraf y gallwch ei drefnu. Os gall yr API derfynu TLS o fewn y rhwydwaith preifat, rhowch y dystysgrif yn storfa ymddiriedaeth y ddyfais a gadewch cleartext wedi’i analluogi, oherwydd mae’r tiwnel yn amgryptio’r llwybr at ei allanfa a dim byd tu hwnt iddi.

Unwaith y bydd y pwynt yn ateb dros HTTPS, tynnwch y caniatâd, ailadeiladwch a phrofwch ar y VPN ac ar Wi-Fi cyffredin yn yr un sesiwn. Gall datrys enwau fod yn wahanol rhwng y ddau lwybr, a dim ond y pâr sy’n dweud wrthych pa un sy’n dweud y gwir.

Erthyglau cysylltiedig