Pregunta

Yo sólo corrí a través de una pregunta con una respuesta que sugiere la biblioteca AntiXss para evitar cross site scripting.Sonaba interesante, la lectura de la blog de msdn, parece que sólo proporcionan un HtmlEncode() método.Pero yo ya uso HttpUtility.HtmlEncode().

Por qué iba yo a querer usar AntiXss.HtmlEncode más de HttpUtility.HtmlEncode?

De hecho, yo no soy el primero en hacer esta pregunta.Y, de hecho, Google se convierte algunos respuestas, principalmente

  • Una lista blanca en vez de negra-enfoque de lista
  • Un 0,1 ms de mejora del rendimiento

Bien, que bueno, pero ¿qué significa esto para mí?No me importa mucho acerca de la actuación de 0,1 ms y la verdad no me siento como la descarga y la adición de otra dependencia de biblioteca para la funcionalidad de la que ya tengo.

Hay ejemplos de casos donde la AntiXss aplicación de prevenir un ataque que el HttpUtility aplicación no?

Si puedo seguir usando el HttpUtility de la implementación, ¿estoy en riesgo?¿Qué acerca de este 'bug'?

¿Fue útil?

Solución

No tengo una respuesta específicamente a tu pregunta, pero me gustaría señalar que la lista blanca vs lista negra enfoque no solo "agradable".Es importante.Muy importante.Cuando se trata de seguridad, cada pequeña cosa que es importante.Recuerde que con el cross-site scripting y cross-site request forgery incluso si su sitio no está mostrando datos sensibles, un hacker podría infectar su sitio mediante la inyección de javascript y lo utilizan para obtener datos sensibles de otro sitio.Para hacerlo bien es fundamental.

OWASP directrices de especificar el uso de un enfoque de lista blanca.PCI Cumplimiento de las directrices también especificar esto en la codificación de las normas (ya que estos se refieren tot de OWASP directrices).

También, la versión más reciente de la biblioteca AntiXss tiene una buena nueva función:.GetSafeHtmlFragment() lo cual es bueno para aquellos casos donde desea almacenar el HTML en la base de datos y mostrarlo al usuario como HTML.

También, como para el "error", si eres de codificación correctamente y siguiendo todas las pautas de seguridad, usted está utilizando procedimientos almacenados con parámetros, por lo que la sola cita se manejan correctamente, Si no estás de codificación correctamente, no fuera de la plataforma de la biblioteca se va a proteger a usted completamente.La biblioteca AntiXss está pensado para ser una herramienta a ser usada, y no un sustituto para el conocimiento.Confiando en la biblioteca a hacer lo correcto para usted estaría esperando un buen pincel a su vez fuera buena pinturas sin un buen artista.

Editar Añadido

Como se pide en la pregunta, un ejemplo de donde el anti xss le protegerá a usted y HttpUtility no:

HttpUtility.HtmlEncode y el Servidor.HtmlEncode no impiden Cross Site Scripting

Que, según el autor, a pesar de que.Yo no lo he probado personalmente.


Suena como que usted está para arriba en sus directrices de seguridad, así que esto no puede ser algo que tengo que decirte, pero sólo en caso de que un menor desarrollador experimentado es por ahí leyendo esto, la razón por la que digo que la lista blanca enfoque es crítico es este.

Ahora, hoy, HttpUtility.HtmlEncode puede bloquear exitosamente cada ataque hay, simplemente mediante la eliminación de/codificación < y > , además de algunos otros "conocidos potencialmente peligrosas" personajes, pero alguien siempre está tratando de pensar en nuevas maneras de romper en.Permitiendo que sólo se conoce-safe (lista blanca) el contenido es mucho más fácil que tratar de pensar en todas las posibles inseguro bits de entrada a un atacante podría lanzar en usted (negro-lista de enfoque).

Otros consejos

En términos de por qué usaría uno sobre el otro, considere que la biblioteca AntiXSS se lanza con más frecuencia que el marco ASP.NET, ya que, como dice David Stratton, 'alguien siempre está tratando de pensar en nuevas formas de romper en ', cuando a alguien se le ocurre una, es mucho más probable que la biblioteca AntiXSS obtenga una versión actualizada para defenderse de ella.

Las siguientes son las diferencias entre Microsoft.Security.Application.AntiXss.HtmlEncode y System.Web.HttpUtility.HtmlEncode métodos:

  1. Anti-XSS utiliza la técnica de lista blanca, a veces conocido como el principio de inclusiones, para proporcionar protección contra el Cross-Site Scripting (XSS) ataques.Este enfoque funciona definiendo en primer lugar una válida o conjunto de caracteres permitido, y codifica nada fuera de este conjunto (caracteres no válidos o posibles ataques). System.Web.HttpUtility.HtmlEncode y otros métodos de codificación en ese espacio de nombres principio de uso de las exclusiones y codificar sólo ciertos caracteres designados como potencialmente peligrosas, tales como <, >, & y ' personajes.

  2. El Anti-XSS de la Biblioteca de la lista de blancos (o seguro) soporte para caracteres de más de una docena de idiomas (griego y Copto, Cirílico, alfabeto Cirílico Suplemento, armenio, hebreo, árabe, Sirio, árabe Suplemento, la escritura thaana, NKo y más)

  3. Anti-XSS biblioteca ha sido diseñado especialmente para mitigar los ataques de XSS, mientras que HttpUtility métodos de codificación se creó para garantizar que ASP.NET de salida no se rompe HTML.

  4. Rendimiento - el promedio de la diferencia entre AntiXss.HtmlEncode() y HttpUtility.HtmlEncode() es +0,1 milisegundos por cada transacción.

  5. Anti-XSS Versión 3.0 proporciona un arnés de prueba que permite a los desarrolladores ejecutar XSS validación y pruebas de rendimiento.

La mayoría de las vulnerabilidades XSS (cualquier tipo de vulnerabilidad, en realidad) se basan únicamente en el hecho de que la seguridad existente no " esperar " ciertas cosas sucedan Los enfoques de solo lista blanca son más aptos para manejar estos escenarios de forma predeterminada.

Utilizamos el enfoque de la lista blanca para los sitios Windows Live de Microsoft. Estoy seguro de que hay muchos ataques de seguridad en los que aún no hemos pensado, así que estoy más cómodo con el enfoque paranoico. Sospecho que ha habido casos en los que la lista negra expuso vulnerabilidades que la lista blanca no, pero no pude contarte los detalles.

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