2009-05-03 9 views

Respuesta

8

Lo # 1 que puede hacer es configurar sus cookies solo a HTTP ... que al menos protege contra el secuestro de cookies de sesión. Como alguien robando su cookie cuando es probable que sea el administrador de su propio sitio.

El resto se reduce a la validación de todas las entradas del usuario.

  • REGLA # 0 - Nunca inserte datos no confiables Excepto en ubicaciones animales
  • REGLA # 1 - HTML de escape Antes de introducir datos no confiables en HTML Elemento Contenido
  • REGLA # 2 - Atributo escapar antes de Inserción de datos no confiables en HTML Atributos comunes
  • REGLA # 3 - escape de JavaScript Antes de introducir datos no confiables en datos HTML JavaScript Valores
  • REGLA # 4 - escape de CSS Antes de introducir datos no confiables en HTML Estilo de la propiedad Valores
  • REGLA # 5 - escape URL Antes de introducir datos no confiables en el URL atributos HTML

muy largo sujetos 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 sólo una de las muchas hazañas y cada desarrollador web debe aprender los 10 mejores OWASP de memoria imho

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

0

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

Pero a veces, tendrá que permitir algún tipo de editor de texto como el que escribió en esta pregunta. En este caso, deberá deshabilitar parcialmente la validación de solicitud para permitir que el usuario final ingrese algún html de "texto enriquecido". En este caso, tendrá que crear algún tipo de mecanismo de filtro de lista blanca.

FYI, no sé otros pero Microsft tiene una biblioteca llamada Anti-Xss.

+0

Lamentablemente, MS lib solo es tan/tan ... pero está mejorando. Aquí está la última versión (beta) http://www.microsoft.com/downloads/details.aspx?FamilyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09&displaylang=en –

2

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

Diseñe su aplicación para que toda la producción pase a través del motor de plantillas. Haga que HTML de motor de plantillas modifique todos los datos de forma predeterminada. De esta manera, tendrás 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.

Cuestiones relacionadas