asp.net - Cómo Html.Encode en formularios web
security webforms (4)
En webforms puede llamar
HttpUtility.HtmlEncode(foo);
Tenga cuidado de no doblar la codificación.
Tengo una aplicación ASP.NET Web Forms. Hay una página con TextBoxes y los usuarios ingresan los términos de búsqueda en estos que se utilizan para consultar la base de datos.
Sé que debo evitar los ataques de inyección de JavaScript. ¿Cómo hago esto?
En MVC usaría Html.Encode
. No parece ser reconocido en los formularios web.
¡Gracias!
Puede usar Server.HtmlEncode (que se traduce a HttpServerUtility.HtmlEncode
), pero Microsoft tiene una mejor biblioteca de protección web llamada AntiXSS que puede descargar desde CodePlex . Incluye una utilidad que utiliza un enfoque de lista blanca para HtmlEncoding
(mucho más seguro y mejor, y recomendado por OWASP aunque apuntan a una versión anterior ). También tiene herramientas que le permiten obtener fragmentos de HTML seguros, etc.
Sin embargo, si no observa nada más, eche un vistazo al top 10 de OWASP . Parece que solo estás rascando la superficie de la seguridad de la aplicación web, y este es el mejor recurso que existe. Los ataques Cross-Site Scripting son solo una de las muchas cosas contra las que debes defenderte.
También es a lo que tendrá que conformarse si tiene que tratar con algún tipo de cumplimiento (PCI, bandera roja, etc.)
Puede usar HttpUtility.HtmlEncode
Si está en ASP.NET 4 o posterior, puede usar esta sintaxis:
<%: Model.Username %>
¿Qué HTML-codificará la expresión? Scott Gu explica el beneficio de esta sintaxis:
Elegimos la sintaxis <%:%> para que sea fácil reemplazar rápidamente las instancias existentes de los bloques de código <% =%>. También le permite buscar fácilmente en su base de códigos elementos <% =%> para encontrar y verificar cualquier caso en el que no esté usando codificación HTML dentro de su aplicación para asegurarse de tener el comportamiento correcto.