2010-07-08 9 views
19

di recente ho notato che avevo un grande buco nella mia richiesta perché avevo fatto qualcosa di simile:Come evitare le vulnerabilità XSS in ASP.Net (MVC)?

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

So che avrei dovuto usare Html.Encode, ma c'è un modo per farlo per tutti i valori, senza dovendo farlo esplicitamente?

risposta

22

Ci sono alcuni modi:

  • utilizzare la sintassi <%: %> in ASP.NET MVC2/.NET 4.0. (Che è solo zucchero sintattico per Html.Encode())
  • Seguire le istruzioni laid out by Phil Haack dove dettagli utilizzando la libreria Anti-XSS come motore di codifica "predefinito" per ASP.NET.
7

In ASP.Net 4.0 o versioni successive, utilizzare sempre <%: ...%> invece di <% = ...%> ... fa la codifica HTML per voi.

Scott Gu's explanation.

Fatto ciò, è abbastanza semplice azzerare il codice per <% = regolarmente come precauzione di sicurezza.

Inoltre, stai usando lo Microsoft Anti-XSS library?

+4

Abbiamo risposto entro tre secondi l'uno dall'altro. Ciao, Newman. –

9

Guarda questo video da Scott Hanselman e Phil Haack. Coprono XSS, CSRF, JSON Hijacking in particolare con ASP.Net MVC.

+0

buon riferimento url .. davvero utile. – Saravanan

2

sintassi per la codifica HTML

  1. <%: model.something%> sintassi in WebForms

  2. è automatico in Razor cioè @ model.something codificherà automaticamente automaticamente senza bisogno di fare qualsiasi cosa da codificare.

  3. MVC3 I metodi HTML Helper restituiscono automaticamente la stringa codificata. per esempio. Html.Label restituirà la stringa codificata

più su cross site scripting

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

1

potenzialmente pericolosi Tag HTML:

Anche se non è un elenco esaustivo, i seguenti tag HTML di uso comune potrebbe consentire a un utente malintenzionato di inserire codice script:

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

Un utente malintenzionato può utilizzare attributi HTML come src, lowsrc, style e href in combinazione con i tag precedenti per iniettare script cross-site. Ad esempio, l'attributo src del tag può essere una fonte di iniezione, come mostrato nei seguenti esempi.

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

Un utente malintenzionato può anche utilizzare il tag per iniettare uno script modificando il tipo MIME come mostrato di seguito.

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

Si consiglia di utilizzare un approccio di lista bianca invece di un approccio blacklist. Prendi in considerazione anche attributi come "onclick", "onblur" e "onhover". – Fred

Problemi correlati