Kaip pataisyti fragmento įdėjimo pažeidimą

Ši informacija skirta programų, kuriose naudojamos nesaugiai įdiegtos „PreferenceActivity“ klasės, dėl kurių gali būti leidžiama jose įdėti fragmentą, kūrėjams. Dėl tokio diegimo kenkėjiškai išorinei programai gali būti leidžiama įkelti fragmentus, kurie turėtų būti privatūs.

Kas vyksta

Nuo 2017 m. kovo 1 d. „Google Play“ pradėjo blokuoti skelbiamas naujas programas ar naujinius, kurių „PreferenceActivity“ klasėse gali būti fragmento įdėjimo pažeidimas. Žr. pranešimą sistemoje „Play Console“Praėjus „Play Console“ nurodytiems terminams, visos programos, kuriose yra nepataisytų saugos pažeidimų, gali būti pašalintos iš „Google Play“.

Būtini veiksmai​

  1. Prisijunkite prie „Play Console“ ir nuėję į skiltį „Įspėjimai“ peržiūrėkite, kurios programos yra paveiktos, bei iki kada reikia išspręsti šias problemas.
  2. Atnaujinkite paveiktas programas ir pataisykite pažeidimą.
  3. Pateikite atnaujintas paveiktų programų versijas.

Pateikus iš naujo, programa bus peržiūrėta dar kartą. Tai gali užtrukti kelias valandas. Jei programa po peržiūros įvertinama kaip tinkama ir sėkmingai paskelbiama, kitų veiksmų imtis nereikia. Jei programa po peržiūros įvertinama kaip netinkama, nauja jos versija skelbiama nebus, o jūs gausite el. pašto pranešimą.

Papildoma informacija

Jei galima, nustatykite „PreferenceActivity“ nustatymą „exported=false“ faile „Manifest“. Tada svetimos programos negalės siųsti tikslų šiai klasei.

Jei pažeidžiamą „PreferenceActivity“ reikia eksportuoti į svetimas programas, nustatykite, kodėl klasė pažeidžiama, ir imkitės atitinkamų veiksmų. Yra dvi galimybės.

  1. Netinkamai įdiegtas „isValidFragment“.

Patikrinkite, ar pažeidžiamoje klasėje yra arba perimamas įdiegtas „isValidFragment“, pateikiantis vertę „True“ visuose kodo keliuose. Jei pateikiama vertė „True“, tada atnaujinkite klasę, kad patikrintumėte leidžiamų fragmento klasių sąrašą. Pvz.: jei „PreferenceActivity“ turėtų leisti „MyFragment“ klases ir neleisti jokių kitų fragmentų, tada įdiekite tokią patikrą:

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. „targetSdkVersion“ senesnė nei 19 versija ir neįdiegiamas „isValidFragment“.

Jei programa šiuo metu apraše nustato mažesnę nei 19 „targetSdkVersion“ vertę ir pažeidžiamoje klasėje nėra įdiegto „isValidFragment“, tada pažeidimas yra perimtas iš „PreferenceActivity“.

Kad tai sutvarkytų, kūrėjai turėtų atnaujinti „targetSdkVersion“ į 19 ar naujesnę versiją. Arba, jei negalima atnaujinti „targetSdkVersion“, kūrėjai turėtų įdiegti „isValidFragment“, kaip aprašyta 1 dalyje, kad patikrintų leidžiamas fragmento klases.

Atminkite, kad programos taip pat turi atitikti Kūrėjų platinimo sutarties ir turinio politikos nuostatas. 

Esame pasirengę padėti

Jei kyla su pažeidimais susijusių techninių klausimų, galite juos paskelbti „Stack Overflow“ ir naudoti žymą „android-security“. Jei reikia daugiau informacijos apie veiksmus, kuriuos turite atlikti, kad išspręstumėte šią problemą, galite susisiekti su mūsų kūrėjų palaikymo komanda.

false
Pagrindinis meniu
5927684913661031975
true
Paieška pagalbos centre
true
true
true
true
true
5016068
false
false