Medidas para prevenir la vulnerabilidad XSS (como la de Twitter unos días antes)

StackOverflow https://stackoverflow.com/questions/816224

  •  03-07-2019
  •  | 
  •  

Pregunta

Incluso los sitios famosos como Twitter están sufriendo la vulnerabilidad de XSS, ¿qué debemos hacer para prevenir este tipo de ataque?

¿Fue útil?

Solución

La cosa # 1 que puede hacer es configurar sus cookies en HTTP Only ... que al menos protege contra el secuestro de cookies de sesión. Como si alguien robara su cookie cuando probablemente sea administrador de su propio sitio.

El resto se reduce a validar todas las entradas del usuario.

  • REGLA # 0: nunca inserte datos que no sean de confianza, excepto en ubicaciones permitidas
  • REGLA # 1: Escape de HTML antes de insertar datos no confiables en el contenido del elemento HTML
  • REGLA # 2: escape de atributos antes de insertar datos no confiables en atributos comunes HTML
  • REGLA # 3 - Escape de JavaScript antes de insertar datos no confiables en valores de datos de JavaScript HTML
  • REGLA # 4 - Escape CSS antes de insertar datos no confiables en valores de propiedades de estilo HTML
  • REGLA # 5 - Escape de URL antes de insertar datos no confiables en atributos de URL HTML

El tema muy extenso se discute en detalle aquí:

http://www.owasp.org/index.php/XSS_ ( Cross_Site_Scripting) _Prevention_Cheat_Sheet

http://www.owasp.org/index.php/Cross_site_scripting

XSS es solo uno de los muchos exploits y cada desarrollador web debería aprender de memoria los 10 mejores OWASP de memoria

http://www.owasp.org/index.php/Top_10_2007

Otros consejos

Al igual que puede hacer que la inyección de SQL no sea un problema mediante el uso de declaraciones preparadas, puede hacer que el XSS no sea un problema mediante el uso del motor de plantillas (serializador DOM) que hace algo similar.

Diseñe su aplicación de modo que toda la salida pase a través del motor de plantillas. Hacer que el motor de plantillas HTML se escape de todos los datos por defecto. De esta manera, tendrá un sistema que es seguro por defecto y no depende de que los humanos (y el resto del sistema grande) sean diligentes en el escape de HTML.

No con lo que escribes tu código, pero si usas asp.net, estás parcialmente cubierto. asp.net tiene lo que llaman validación de solicitud que, cuando está habilitada, evita que se introduzcan scripts maliciosos a través de la entrada del usuario.

Pero a veces, tendrás que permitir algún tipo de editor de texto como el que escribiste en esta pregunta. En este caso, deberá deshabilitar parcialmente la validación de solicitud para permitir que " texto enriquecido " HTML para ser ingresado por el usuario final. En este caso, tendrá que crear algún tipo de mecanismo de filtrado de lista blanca.

Para tu información, no conozco a otros, pero Microsft tiene una biblioteca llamada Anti-Xss.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top