Corregir una vulnerabilitat d'injecció d'SQL

Aquesta informació va dirigida als desenvolupadors d'aplicacions que contenen la vulnerabilitat d'injecció d'SQL.

Què passa

Com a mínim una de les teves aplicacions conté una vulnerabilitat de SQL Injection que cal corregir. Consulta l'avís a Play Console. Després de les dates límit que es mostren a Play Console, és possible que les aplicacions que presentin vulnerabilitats de seguretat sense solucionar se suprimeixin de Google Play.

Acció necessària​

  1. Inicia la sessió a Play Console i navega per la secció Alertes per consultar quines aplicacions es veuen afectades i les dates límit per resoldre aquests problemes.
  2. Actualitza les aplicacions afectades i soluciona la vulnerabilitat.
  3. Envia les versions actualitzades de les aplicacions afectades.

Un cop hagis l'hagis tornat a enviar, tornarem a revisar la teva aplicació. Aquest procés pot tardar diverses hores. Si l'aplicació passa la revisió i es publica correctament, no cal dur a terme cap altra acció. Si l'aplicació no passa la revisió, no se'n publicarà la versió nova i rebràs una notificació per correu electrònic.

Detalls addicionals

Les implementacions de query, d'update i de delete en ContentProviders exportats poden ser vulnerables a SQL Injection si passen entrades defectuoses a les sentències SQL. Una aplicació maliciosa pot proporcionar una entrada dissenyada per accedir a les dades privades o malmetre el contingut de la base de dades. Pots solucionar aquest problema de les maneres següents:

Si no cal que un ContentProvider afectat s'exposi a altres aplicacions:

Si un ContentProvider afectat s'ha d'exposar a altres aplicacions:

  • Per evitar una SQL Injection a SQLiteDatabase.query, pots utilitzar el mode Strict amb un ProjectionMap. El mode estricte protegeix de les clàusules de selecció malicioses i el mapa de projecció protegeix de les clàusules de projecció malicioses. Has d'utilitzar aquestes dues funcions per garantir que les consultes estiguin protegides.
  • Pots evitar una SQL Injection a SQLiteDatabase.update i SQLiteDatabase.delete amb una clàusula de selecció que utilitzi "?" com a paràmetre reemplaçable i un conjunt independent d'arguments de selecció. La clàusula de selecció no s'ha de construir a partir d'entrades que no siguin de confiança.

Som aquí per ajudar-te

Si tens cap dubte tècnic sobre la vulnerabilitat, pots publicar les teves preguntes a Stack Overflow amb l'etiqueta "android-security". Per aclarir els passos que has de seguir per resoldre aquest problema, pots contactar amb el nostre equip d'assistència per a desenvolupadors.