2010-07-08 4 views
19

J'ai récemment remarqué que j'avais un grand trou dans ma demande parce que je l'avais fait quelque chose comme:Comment éviter les vulnérabilités XSS dans ASP.Net (MVC)?

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

Je sais que je l'ai utilisé Html.Encode, mais est-il possible de le faire pour toutes les valeurs, sans avoir à le faire explicitement?

Répondre

22

Il y a quelques façons:

  • Utilisez la syntaxe <%: %> dans ASP.NET MVC2/.NET 4.0. (Lequel est juste sucre syntaxique pour Html.Encode())
  • Suivez les instructions laid out by Phil Haack où il détaille en utilisant la bibliothèque Anti-XSS comme moteur d'encodage 'par défaut' pour ASP.NET.
7

Dans ASP.Net 4.0 ou version ultérieure, utilisez toujours <%: ...%> au lieu de <% = ...%> ... il effectue le codage HTML pour vous.

Scott Gu's explanation.

Cela étant fait, il est assez simple de grep votre code pour <% = régulièrement par mesure de sécurité. En outre, utilisez-vous le Microsoft Anti-XSS library?

+4

Nous avons répondu à moins de trois secondes l'un de l'autre. Bonjour, Newman. –

9

Regardez ce video de Scott Hanselman et Phil Haack. Ils couvrent XSS, CSRF, JSON Hijacking spécifiquement avec ASP.Net MVC.

+0

bonne référence d'url .. vraiment utile. – Saravanan

1

balises HTML potentiellement dangereux:

une liste non exhaustive, les balises HTML suivantes couramment utilisés pourrait permettre à un utilisateur malveillant d'injecter le code de script:

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

Un attaquant peut employer des attributs HTML tels que src, lowsrc, style et href en conjonction avec les balises précédentes pour injecter des scripts inter-sites. Par exemple, l'attribut src de l'étiquette peut être une source d'injection, comme le montrent les exemples suivants.

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

Un attaquant peut également utiliser le tag pour injecter un script en modifiant le type MIME comme indiqué ci-après.

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

Vous pouvez utiliser une approche de liste blanche plutôt qu'une approche de liste noire. Considérez également les attributs tels que 'onclick',' onblur' et 'onhover'. – Fred

Questions connexes