Тази информация е предназначена за програмисти, чиито приложения съдържат уязвимостта от инжектиране на SQL.
Какво се случва
Едно или повече от приложенията ви имат уязвимост от инжектиране на SQL, която трябва да бъде премахната. Моля, вижте известието в Play Console. След крайните срокове, показани в Play Console, всички приложения, които съдържат уязвимости в сигурността, може да бъдат премахнати от Google Play.
Изисква се действие
- Влезте в профила си в Play Console и преминете към секцията „Сигнали“, за да видите кои приложения са засегнати и крайните срокове за решаване на тези проблеми.
- Актуализирайте засегнатите приложения и отстранете уязвимостта.
- Изпратете актуализираните версии на засегнатите приложения.
При повторно изпращане приложението ви ще бъде прегледано отново. Този процес може да отнеме няколко часа. Ако приложението премине проверката и бъде публикувано успешно, няма нужда да правите нищо повече. В противен случай новата му версия няма да бъде публикувана и ще получите известие по имейл.
Допълнителни подробности
Реализациите на query
, update
и delete
в експортирани обекти ContentProvider
могат да бъдат уязвими от инжектиране на SQL, ако предават ненадеждни параметри към команди за SQL. Злонамерено приложение може да предостави специално създаден параметър, за да получи достъп до лични данни или да повреди съдържание в база от данни. Можете да отстраните този проблем по следните начини:
Ако засегнатият обект ContentProvider
не трябва да е достъпен за други приложения:
- Можете да промените маркера
<provider>
на засегнатия обектContentProvider
в манифеста си така, че да е зададеноandroid:exported="false"
. Това ще попречи на другите приложения да изпращат намерения (Intent) до съответнияContentProvider
. -
Можете също да зададете атрибутът
android:permission
да бъде елементpermission
с ниво на защитаandroid:protectionLevel="signature"
, така че приложенията, написани от други програмисти, да не могат да изпращат намерения до засегнатия обектContentProvider
.
Ако засегнатият обект ContentProvider
трябва да е достъпен за други приложения:
- Можете да предотвратите инжектирането на SQL в
SQLiteDatabase.query
, като използвате режима Strict заедно с проекционна карта. Този режим осигурява защита срещу злонамерени клаузи за селекция, а проекционната карта защитава от злонамерени клаузи за проекция. Трябва да използвате и двете функции, за да гарантирате безопасността на заявките си. - Можете да предотвратите инжектирането на SQL в
SQLiteDatabase.update
иSQLiteDatabase.delete
с помощта на клауза за селекция, в която се използва"?"
като променлив параметър, и отделен масив от аргументи за селекция. Клаузата ви за селекция не може да бъде съставена от ненадеждни параметри.
На ваше разположение сме
Ако имате технически въпроси относно уязвимостта, можете да ги публикувате в Stack Overflow и да използвате маркера android-security. За разяснение на стъпките, които трябва да изпълните, за да решите проблема, можете да се свържете с екипа ни за поддръжка за програмисти.