Estoy creando una aplicación web, en la que debo permitir que el usuario ingrese cualquier carácter (incluso caracteres especiales - ~!@#$%^&*()_-+=|\{}[];:'"<,.>
) en un campo de entrada. Para mitigar los problemas causados por ellos, me ocupo de dos cosas:
- inyección SQL - mediante consultas parametrizadas
- Secuencias de comandos de sitios cruzados: HTML que escapa la entrada del usuario antes de agregarla a DOM.
¿Es suficiente o me falta algo?
EDIT Para dar un mejor contexto, estoy explicando el flujo.
En mi aplicación web, la entrada del usuario va directamente a una base de datos. Se obtiene de la base de datos para crear HTML (también para la configuración de atributos y estilos de elementos html) y JSON. Estoy escapando de los valores obtenidos de la base de datos al crear HTML.
Al crear JSON, no estoy escapando de esos valores recuperados. Este JSON es utilizado por nuestra otra aplicación para crear HTML. Y me estoy asegurando de que los valores se escapen antes de insertarlos en HTML.