2010-07-08 10 views
19

poco me di cuenta que tenía un gran agujero en mi solicitud porque había hecho algo como:¿Cómo se evitan las vulnerabilidades XSS en ASP.Net (MVC)?

<input type="text" value="<%= value%>" /> 

Sé que debería haber utilizado Html.Encode, pero ¿hay alguna manera de hacerlo para todos los valores, sin tener que hacerlo explícitamente?

Respuesta

22

Hay algunas maneras:

  • utilizar la sintaxis <%: %> en ASP.NET MVC2/.NET 4.0. (Que es solo azúcar sintáctico para Html.Encode())
  • Siga las instrucciones laid out by Phil Haack donde detalla el uso de la biblioteca Anti-XSS como el motor de codificación 'predeterminado' para ASP.NET.
7

En ASP.Net 4.0 o posterior, siempre use <%: ...%> en vez de <% = ...%> ... hace la codificación HTML por usted.

Scott Gu's explanation.

Una vez hecho esto, es bastante sencillo a grep su código de <% = regularmente como medida de seguridad.

Además, se está utilizando la Microsoft Anti-XSS library?

+4

Respondimos dentro de tres segundos el uno del otro. Hola, Newman. –

9

Mira esto video de Scott Hanselman and Phil Haack. Cubren XSS, CSRF, JSON Hijacking específicamente con ASP.Net MVC.

+0

buena referencia de url .. realmente útil. – Saravanan

2

Sintaxis para la codificación HTML

  1. <%: model.something%> sintaxis en WebForms

  2. es automático en la maquinilla de afeitar es decir @ model.something codificará auto automáticamente no necesidad de hacer cualquier cosa para codificar

  3. métodos
  4. MVC3 HTML Helper devuelven la cadena codificada de forma automática. p.ej. Html.Label devolverá la cadena codificada

Más acerca de secuencias de comandos entre sitio

http://thirum.wordpress.com/2013/10/24/how-asp-net-mvc-prevents-cross-site-scriptingxss-attack/

1

potencialmente peligrosas HTML Etiquetas:

Aunque no es una lista exhaustiva, las siguientes etiquetas HTML de uso común podría permitir que un usuario malintencionado inyecte código de secuencia de comandos:

<applet> 
<body> 
<embed> 
<frame> 
<script> 
<frameset> 
<html> 
<iframe> 
<img> 
<style> 
<layer> 
<link> 
<ilayer> 
<meta> 
<object> 

Un atacante puede usar atributos HTML como src, lowsrc, style y href junto con las etiquetas anteriores para inyectar scripts de sitios cruzados. Por ejemplo, el atributo src de la etiqueta puede ser una fuente de inyección, como se muestra en los siguientes ejemplos.

<img src="javascript:alert('hello');"> 
<img src="java&#010;script:alert('hello');"> 
<img src="java&#X0A;script:alert('hello');"> 

Un atacante también puede utilizar la etiqueta para inyectar un script cambiando el tipo MIME como se muestra en la siguiente.

<style TYPE="text/javascript"> 
    alert('hello'); 
</style> 
+0

Es posible que desee utilizar un enfoque de lista blanca en lugar de un enfoque de lista negra. También considere atributos como 'onclick',' onblur' y 'onhover'. – Fred

Cuestiones relacionadas