¿Es seguro obtener datos codificados html de la base de datos para evitar un ataque XSS almacenado?

0

por motivos de seguridad ahora estoy recuperando todos los datos de la base de datos con formato htmlEncoded. ¿es correcto? por favor ayuda ..

    
pregunta vishal9796 05.05.2018 - 15:05
fuente

2 respuestas

2

Esto funciona para los datos que se muestran como HTML, pero solo para algunas áreas de HTML, y no es la mejor práctica.

Desea codificar datos para el contexto específico que se está utilizando o visualizando, lo que significa que debe codificarlos correctamente en el momento en que los esté utilizando o visualizando. Codificarlo como sale de la base de datos no es una buena práctica, por lo general, no se sabe cómo se utilizará con el tiempo y dará lugar a una doble codificación o codificación para el contexto incorrecto. Es probable que esté codificando para los atributos HTML. Pero estos datos se pueden usar para elementos HTML, javascript, URL o tal vez se usen en otros contextos, como volver a colocarlos en la base de datos.

Consulte la Hoja de trucos OWASP XSS para saber cómo codificar varios contextos HTML.

Es un patrón común para codificar agresivamente para HTML a medida que sale de la base de datos, como lo está haciendo aquí, u otro patrón similar es la codificación a medida que los parámetros se extraen del contexto del servlet. Parece más seguro, y para las aplicaciones heredadas puede ser una forma de actualizar rápidamente el código. Pero, en aplicaciones complejas, puede conducir a problemas funcionales o poca seguridad. He visto varios casos en los que las funciones de salida comunes esperan que las cadenas ya estén codificadas, pero muchas de las llamadas a las funciones provienen de otros contextos que pasan cadenas no codificadas.

Si continúa con la "codificación agresiva", debe nombrar y documentar claramente qué funciones esperan codificadas frente a cadenas no codificadas.

    
respondido por el Egret 06.05.2018 - 18:47
fuente
1

Sí y no. Es correcto hacerlo para los datos que se muestran como HTML. Pero puede haber otros usos para sus datos, donde la codificación HTML puede no ser adecuada. Por ejemplo, si procesa los datos, la codificación puede causar problemas. Por otro lado, si, por ejemplo, coloca los datos en javascript, es posible que tenga que usar una codificación diferente.

También si usa PHP o un lenguaje donde la codificación html funciona de manera similar, es posible que desee usar la bandera ENT_QUOTES para escapar también del carácter ' .

    
respondido por el Peter Harmann 05.05.2018 - 16:00
fuente

Lea otras preguntas en las etiquetas