¿Cuándo puedo escapar de los datos?
Básicamente, lo más tarde posible. La base de datos está en un lugar donde almacenar datos, no es un lugar para codificar (escapar) datos. Por supuesto, use declaraciones preparadas parametrizadas para evitar cualquier inyección SQL , pero eso debería ser lo más lejos posible. Su objetivo para escribir en la base de datos es simplemente almacenar los datos correctamente y evitar que cualquier atacante rompa el contexto y manipule las consultas en su propio beneficio.
Siempre piense que si un cliente / gerente / proveedor necesita una exportación de los datos, es mucho más fácil si estos datos ya están en formato sencillo. Puede convertirse en un dolor de cabeza si luego tiene que comenzar a convertirlo de HTML / JSON y luego volver al formato correcto para la exportación.
Por lo tanto, la solución es codificar para JSON (pero no para HTML) cuando se entrega el JSON (preferiblemente utilizando un codificador Java JSON probado y probado).
No mencionas cómo estás renderizando en tu aplicación de Android. Si está utilizando un control no web, no necesita escapar en absoluto. Si el controlador no interpreta HTML y simplemente está configurando elementos de texto, la aplicación no ejecutará ningún script inyectado. Si está generando una vista web en Android en el cliente, debe codificar HTML en este punto.