.net asp.net xss antixsslibrary

.net - ¿Por qué usar la librería Microsoft AntiXSS?



asp.net antixsslibrary (4)

Intenté implementar la biblioteca AntiXss y funcionó bien para eliminar la etiqueta de script. Pero no lo hizo con HTML. Vea el ejemplo a continuación

<a href="http://west-wind.com">West Wind</a><br>Hello<br>Please login with the form below before proceeding:<form action="”mybadsite.aspx”"><table><tbody><tr><td>Login:</td><td><input type="text" name="x_x_x_x_x_x_x_x_x_x_x_x_x_login"></td></tr><tr><td>Password:</td><td><input type="text" name="x_x_x_x_x_x_x_x_x_x_x_x_x_password"> </td></tr></tbody></table><input type="submit" value="LOGIN"></form>

Cuando simplemente puede codificar los datos usando HttpUtility.HtmlEncode , ¿por qué deberíamos usar AntiXss.HtmlEncode ?

¿Por qué es el enfoque de lista blanca mejor que la lista negra?

Además, en la biblioteca Anti XSS, ¿dónde especifico la lista blanca?


La biblioteca AntiXss también incluye métodos de codificación para cosas como Javascript o atributos.


Las listas blancas siempre son más seguras que las listas negras: solo piense cuál será más segura, tenga una lista de todas las personas que no están permitidas en su grupo o solo permita las personas que sí lo están. (Básicamente, las listas negras solo pueden manejar ataques que son obvios o que se han usado antes).


No puede especificar o alterar la lista blanca con la biblioteca AntiXSS, lo cual no es extraño cuando se piensa en ello. La biblioteca AntiXSS codifica por defecto todos los caracteres que no están en el siguiente rango: 0..9a..zA..Z. Este conjunto de caracteres es seguro (y por lo tanto están en la lista blanca) y no hay necesidad de codificarlos. Tenga en cuenta que la biblioteca AntiXSS tiene diferentes listas para codificar javascript, html y url''s. No utilice la codificación html para las URL, porque tendrá un agujero de seguridad en su aplicación.

Tenga en cuenta que la lista blanca en HtmlEncode funciona de manera diferente a la lista blanca en GetSafeHtmlFragment . Con HtmlEncode usted dice '' codifique todos los caracteres que no GetSafeHtmlFragment en la lista blanca'', con GetSafeHtmlFragment usted dice '' elimine todas las etiquetas y atributos que no estén en la lista blanca''.

Cuando esté utilizando ASP.NET 4.0, le aconsejo que no use la biblioteca AntiXSS (directamente), sino que simplemente use los mecanismos integrados (como HttpUtility) para codificar HTML. ASP.NET 4.0 le permite configurar un HttpEncoder en el archivo de configuración . Puede escribir su propio HttpEncoder que utiliza la biblioteca AntiXSS (es probable que una versión futura de la biblioteca AntiXSS contenga una implementación de HttpEncoder ). Al hacer esto, toda la aplicación (y todos los controles ASP.NET y controles personalizados) utilizarán la codificación de la lista blanca en lugar de la codificación de la lista negra.

ASP.NET 4.0 también introduce un nuevo bloque de código para el texto codificado . Puede usar el nombre: <%: Model.FirstName %> . Sin embargo, personalmente encuentro que <%= HttpUtility.HtmlEncode(Model.FirstName) %> más explícito.