Ове информације су намењене програмерима са апликацијама које користе примену класа PreferenceActivity која није безбедна и због које су класе подложне увођењу фрагмената. Таква примена може да омогући да злонамерна спољна апликација учитава фрагменте који треба да буду приватни.
Шта се дешава
Од 1. марта 2017. Google Play је почео да блокира објављивање свих нових апликација или ажурирања у којим класе PreferenceActivity могу да буду подложне увођењу фрагмената. Погледајте обавештење у Play конзоли. Уклонићемо из Google Play-а све апликације које и после датума наведених у Play конзоли буду садржале безбедносне пропусте.
Треба да реагујете
- Пријавите се у Play конзолу и идите до одељка Обавештења да бисте видели које апликације су угрожене и рокове за решавање тих проблема.
- Ажурирајте апликације на које се ово односи и исправите пропусте.
- Пошаљите ажуриране верзије апликација на које се ово односи.
Када је поново пошаљете, апликација ће поново бити прегледана. Овај процес може да потраје неколико сати. Ако апликација прође преглед и буде објављена, не треба ништа више да предузимате. Ако апликација не прође преглед, онда нова верзија апликације неће бити објављена, а ви ћете добити обавештење имејлом.
Додатне информације
Када је то могуће, подесите exported=false за PreferenceActivity у манифесту. На тај начин ћете спречити да спољне апликације шаљу намере овој класи.
Ако PreferenceActivity који садржи пропуст мора да се извезе у спољне апликације, онда утврдите зашто класа садржи пропуст и предузмите адекватне мере. Постоје две могућности:
-
Нетачна примена атрибута isValidFragment:
Проверите да ли класа са пропустом садржи или наслеђује примену аргумента isValidFragment који даје вредност true за све путање кода. Ако је то тачно, онда ажурирајте класу да бисте проверили да ли постоји листа дозвољених класа фрагмената. На пример: Ако PreferenceActivity треба да дозволи класе MyFragment и никакве друге фрагменте, онда примените проверу попут ове:
public boolean isValidFragment(String fragmentName) {
return MyFragment.class.getName().equals(fragmentName);
}
-
Верзија за targetSdkVersion старија од верзије 19 и не примењује isValidFragment:
Ако апликација тренутно подешава targetSdkVersion у манифесту на вредност мању од 19 и класа са пропустом не садржи никакву примену атрибута isValidFragment, онда се пропуст наслеђује из класа PreferenceActivity.
Да би то решили, програмери треба да ажурирају targetSdkVersion на вредност 19 или вишу. Ако targetSdkVersion не може да се ажурира, онда програмери треба да примене isValidFragment као што је описано у 1. кораку да би проверили које су дозвољене класе фрагмената.
Имајте у виду да апликације такође морају да буду у складу са Уговором о дистрибуцији за програмере и Смерницама за садржај.
Ту смо да помогнемо
Ако имате техничких питања у вези са пропустом, можете да их поставите на Stack Overflow помоћу ознаке „android-security“. Да бисте разјаснили кораке које треба да предузмете да бисте решили овај проблем, можете да контактирате тим подршке за програмере.