Active Android es propenso a las inyecciones de SQL. ¿Alguna solución conocida?

La aplicación de Android ya está desarrollada con ActiveAndroid

public static List<ModelNames> search(String pattern) { return new Select().from(ModelNames.class) .where("title LIKE '%" + pattern + "%' or content LIKE '%" + pattern + "%'") .orderBy("title") .execute(); } 

Ahora es propenso a las inyecciones de SQL.

¿Alguien se enfrentó a un problema similar y encontró una solución o alguien podría proporcionar una solución para el mismo?

Encontramos un problema en github , pero no pudimos obtener una solución adecuada.

Los ejemplos en el sitio web muestran cómo usar marcadores de posición:

 public static List<ModelNames> search(String pattern) { pattern = "%" + pattern + "%"; return new Select().from(ModelNames.class) .where("title LIKE ? or content LIKE ?", pattern, pattern) .orderBy("title") .execute(); } 

Lo que hago es asumir, que todo lo que un usuario ingresa es una amenaza, por lo que ahorraría todo a variables como usUsername, donde "us" significa inseguro. Después de eso, comprobar cada "nosotros" -variable para inyecciones, lo que resulta en sUsername (s significa seguro). Así que cuando construyo una consulta sólo puedo usar s-varaibles y debería ser seguro en la mayoría de los casos.

Esta idea se toma totalmente de aquí: http://www.joelonsoftware.com/articles/Wrong.html

Ya mencionado en esta pregunta .

Descubrí una solución, pero dejé que otras personas respondieran con mejor propuesta con respecto a ActiveAndroid ORM.

Siguiente es la solución:

 public static List<ModelNames> search(String pattern) { return new Select().from(ModelNames.class) String pattern = DatabaseUtils.sqlEscapeString(searchBar.getText().toString()); pattern = pattern.substring(1, pattern.length()); pattern = pattern.substring(0, pattern.length()-1); .where("title LIKE '%" + pattern + "%' or content LIKE '%" + pattern + "%'") .orderBy("title") .execute(); } 

Ref: sqlEscapeString

  • Android SQLite - ¿qué hace SQLiteDatabase.replace () en realidad?
  • Vista de lista con la opción de actualización y supresión mediante contextmenu
  • Comprobación de Android cuando se actualizó la última vez
  • Problema con SQLite DB para Android
  • Sqlite db update
  • ¿Qué desencadena SqliteDbOpenHelper onUpgrade ()?
  • Mantenimiento de un ListView donde cada elemento de lista tiene una relación de uno a muchos
  • Android SQLite Dónde y cuándo inicializar SQLiteOpenHelper
  • Restricción única del reino en varios campos
  • Datos de SQLite a un RecyclerView
  • Android ExpandableListView y base de datos SQLite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.