2010-06-28 14 views
7

Con .net 4 hay un nuevo <%:%> recinto de script que es como <% =%> pero tiene una codificación html. La gente está fomentando el uso de esta nueva sintaxis.<%: %> vs Microsoft la biblioteca anti XSS

Mi pregunta es, ¿<%:%> protege mejor contra XSS o también usa la biblioteca Microsoft Anti XSS?

Una persona de seguridad de Microsoft me dijo una vez que nunca use HTML Encode ya que no protege muy bien y que siempre debería usar la biblioteca Anti XSS (u otra biblioteca). ¿Sigue siendo cierto con <%:%>? ¿O puedo usar con confianza <%:%> sabiendo que va a proteger mi aplicación de XSS como dicen las personas?

Respuesta

9

HttpUtility.HtmlEncode utiliza una lista de negro (principio de exclusiones) enfoque de codificación, lo que potencialmente deja la puerta entreabierta durante descubrir nuevas hazañas en el futuro. El Anti-XSS library (ahora conocido como Web Protection Library e incluye código para mitigar la inyección de SQL también) utiliza un enfoque de lista blanca (principio de inclusiones) que cierra la puerta un poco más y debe proporcionar una mayor seguridad.

<%: ... %> es solo un atajo para <%= Server.HtmlEncode(string) %> y por lo tanto proporciona la seguridad del codificador utilizado en su aplicación.

Se puede utilizar cualquier codificador que quiera con la nueva sintaxis <%: ... %> y Phil Haack tiene un gran puesto en hooking up the Anti-Xss library as the default encoder. Tenga en cuenta que actualmente la biblioteca Anti-XSS 3.1 requiere una confianza media para ejecutarse; esto se está abordando para una versión futura.

+0

No sabía que conectar <%: %> a un codificador diferente. Eso es genial. – dtc

1

La sintaxis nueva solo se debe usar para escapar del contenido de texto sin formato en HTML. EDITAR: y atributos.

Para atributos, Javascript y otros contextos, también debe utilizar la biblioteca Anti-XSS,

+0

La biblioteca Anti-XSS proporciona una codificación más segura para códigos HTML y codificación de atributos, así – orip