Премахване на уязвимост от инжектиране на SQL

Тази информация е предназначена за програмисти, чиито приложения съдържат уязвимостта от инжектиране на SQL.

Какво се случва

Едно или повече от приложенията ви имат уязвимост от инжектиране на SQL, която трябва да бъде премахната. Моля, вижте известието в Play ConsoleСлед крайните срокове, показани в Play Console, всички приложения, които съдържат уязвимости в сигурността, може да бъдат премахнати от Google Play.

Изисква се действие​

  1. Влезте в профила си в Play Console и преминете към секцията „Сигнали“, за да видите кои приложения са засегнати и крайните срокове за решаване на тези проблеми.
  2. Актуализирайте засегнатите приложения и отстранете уязвимостта.
  3. Изпратете актуализираните версии на засегнатите приложения.

При повторно изпращане приложението ви ще бъде прегледано отново. Този процес може да отнеме няколко часа. Ако приложението премине проверката и бъде публикувано успешно, няма нужда да правите нищо повече. В противен случай новата му версия няма да бъде публикувана и ще получите известие по имейл.

Допълнителни подробности

Реализациите на 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. За разяснение на стъпките, които трябва да изпълните, за да решите проблема, можете да се свържете с екипа ни за поддръжка за програмисти.

false
Главно меню
16970648652402446322
true
Търсене в Помощния център
true
true
true
true
true
5016068
false
false
false