Los dos riesgos principales de un sistema como este son:
El riesgo de inyección SQL se mitiga mediante el uso de consultas parametrizadas . Esto garantiza que los valores de datos insertados en la base de datos solo puedan interpretarse como datos y no como parte de la consulta por un atacante que se escape del contexto.
XSS se evita mediante la correcta escape de salida . Esto evita que el navegador interprete cualquier marca o código como secuencia de comandos y, en su lugar, representará la representación visual de la marca. Esto debe ser realizado por su aplicación en la salida de datos al navegador y, por lo general, no debe almacenarse en este formato. Esto se debe a que si luego tiene que generar los datos en cualquier otro formato (por ejemplo, JSON o texto sin formato), las cosas pueden complicarse porque primero tendrá que volver a convertir a texto sin formato antes de volver a codificar y aquí es donde los errores pueden ocurrir fácilmente. para dejar tu aplicación vulnerable.