Naprawianie luki umożliwiającej wstrzyknięcie kodu SQL

Te informacje są przeznaczone dla programistów aplikacji, które zawierają lukę umożliwiającą wstrzyknięcie kodu SQL

Co zamierzamy

Co najmniej jedna z Twoich aplikacji zawiera lukę umożliwiającą wstrzyknięcie kodu SQL, którą należy usunąć. Zapoznaj się z powiadomieniem w Konsoli Play. Po przekroczeniu terminów wskazanych w Konsoli Play wszystkie aplikacje z lukami w zabezpieczeniach mogą zostać usunięte z Google Play.

Wymagane działania​

  1. Zaloguj się w Konsoli Play i przejdź do sekcji Alerty, by sprawdzić, których aplikacji dotyczy problem i jaki jest termin jego rozwiązania.
  2. Zaktualizuj te aplikacje i usuń lukę w zabezpieczeniach.
  3. Prześlij zaktualizowane wersje tych aplikacji.

Po ponownym przesłaniu aplikacja zostanie jeszcze raz sprawdzona. Ten proces może potrwać kilka godzin. Jeśli aplikacja pomyślnie przejdzie weryfikację i zostanie opublikowana, nie musisz już nic robić. Jeśli wynik weryfikacji nie będzie pomyślny, nowa wersja aplikacji nie zostanie opublikowana, a Ty otrzymasz powiadomienie e-mailem.

Dodatkowe szczegóły

Implementacje funkcji query, update i delete w wyeksportowanych komponentach ContentProvider mogą być podatne na wstrzyknięcie kodu SQL, jeśli przekazują niesprawdzone dane wejściowe do instrukcji SQL. Złośliwa aplikacja może dostarczyć zmanipulowane dane wejściowe, by uzyskać dostęp do prywatnych danych lub uszkodzić zawartość bazy danych. Oto propozycje rozwiązania tego problemu:

Jeśli komponent ContentProvider nie musi być widoczny dla innych aplikacji:

Jeśli komponent ContentProvider musi być widoczny dla innych aplikacji:

  • Możesz uniemożliwić wstrzyknięcie kodu SQL do funkcji SQLiteDatabase.query, używając trybu ścisłego z mapą projekcji. Tryb ścisły chroni przed działaniem złośliwych klauzul wyboru, a mapa projekcji chroni przed klauzulami złośliwych projekcji. Aby mieć pewność, że zapytania są bezpieczne, musisz używać obu tych funkcji.
  • Możesz uniemożliwić wstrzyknięcie kodu SQL do funkcji SQLiteDatabase.updateSQLiteDatabase.delete, stosując klauzulę wyboru używającą znaku „?” jako parametru wymiennego oraz odrębnej tablicy argumentów wyboru. Klauzula wyboru nie powinna się składać z niezaufanych danych wejściowych.

Chętnie Ci pomożemy

Jeśli masz pytania techniczne związane z tą luką w zabezpieczeniach, możesz je opublikować na Stack Overflow, używając tagu „android-security”. Jeśli potrzebujesz wyjaśnienia czynności potrzebnych do rozwiązania tego problemu, skontaktuj się z naszym zespołem pomocy dla deweloperów.

Czy to było pomocne?

Jak możemy ją poprawić?
false
Menu główne
4513202238341083114
true
Wyszukaj w Centrum pomocy
true
true
true
true
true
5016068
false
false