Tener un código malicioso almacenado en su base de datos

2

Digamos que hay un sitio web que tiene un campo de entrada desde el cual la entrada se guarda en una base de datos y luego se muestra en otro lugar del sitio web.

  • ¿Es seguro solo desinfectar / escapar la salida, cuando se muestran los datos?

  • ¿Tiene que escapar también de la entrada para evitar que datos maliciosos ingresen a la base de datos en primer lugar?

Lo que me preocupa es que incluso si la aplicación maneja la salida, por ejemplo, escapando los datos de la base de datos, pero es posible que alguna otra aplicación no tenga dicho mecanismo para proteger a los usuarios para los cuales se muestran los datos.

¿Es seguro mantener el código malicioso almacenado en su base de datos por el hecho de no cambiar la entrada del usuario siempre que pueda evitar que dañe al usuario?

    
pregunta Dropout 26.05.2016 - 10:26
fuente

1 respuesta

6

En mi opinión, es una mala manera de haber escapado de datos en la base de datos. Dado que las reglas de escape varían según la entrada, un medio de salida (HTML, JSON, ...) pertenecen al lugar donde ingresa y envía datos y no en la base de datos.

Recomiendo usar una arquitectura multitier donde el nivel de datos (es decir, la base de datos) contiene los datos simples (sin escape) , el nivel lógico (es decir, la lógica de negocios) funciona con estos datos simples y solo el nivel de presentación (es decir, el sitio web, la API REST, ...) se preocupa por los datos de escape y escape. De esta manera, los datos se saldrán correctamente (entrada) y se escaparán (salida) dependiendo de las reglas de escape de los diversos medios de entrada y salida (HTML, JSON, PDF, YAML, lo que sea ...).

  

... pero es posible que otras aplicaciones no tengan dicho mecanismo para proteger a los usuarios a los que se muestran los datos.

Le temo que este tipo de aplicaciones no funcionen, entonces también debería temer a las aplicaciones que usan datos pre-escapados con HTML que se escapan para generar JSON o que vuelven a escapar, incluso si ya se han escapado en la base de datos, etc. Debe tener reglas claras sobre cómo los datos se almacenan en la base de datos (que no solo incluye escapes, sino también codificaciones de caracteres como UTF-8) y las aplicaciones deben conocer y seguir estas reglas.

    
respondido por el Steffen Ullrich 26.05.2016 - 10:44
fuente

Lea otras preguntas en las etiquetas