Quanto è affidabile la funzione di convalida delle richieste di ASP.NET?

11

ASP.NET offre un ulteriore livello per proteggere la tua applicazione dagli attacchi XSS e dall'iniezione in generale, che si chiama Richiedi convalida .

Nel loro argomento ufficiale, dicono che:

Even if you're using request validation, you should HTML-encode text that you get from users before you display it on a page.

Supponendo che un'applicazione web non convalidi o disinfetti i dati inviati al server ma la funzione è abilitata, come si potrebbe evitare questo strato aggiuntivo di inviare codice dannoso? Questa funzione è necessaria per un'applicazione ASP.NET?

    
posta Simon 26.06.2013 - 23:06
fonte

2 risposte

13

Come tester di penetrazione ho riscontrato che "Convalida della richiesta" fallisce in un certo numero di situazioni. Gli sviluppatori tendono a credere che "Request Validation" == "magic" , e li protegge completamente da XSS, quando in realtà questo falso senso di sicurezza si traduce in problemi molto seri. Tutte le forme di XSS basato su DOM e Persistenza XSS ignorano "Convalida richiesta" e in altri casi non riesce:

Nel prossimo caso l'attaccante non ha bisogno di scrivere un tag HTML, semplicemente scrivendo un URI JavaScript un utente malintenzionato può eseguire JavaScript:

<a href="javascript:alert(1)">xss</a>
<iframe src="javascript:alert(1)" />

In questo caso, l'autore dell'attacco sta già scrivendo all'interno di un tag script:

<script>
  var x=alert(1);
</script>
    
risposta data 27.06.2013 - 04:57
fonte
0

Sì, la convalida della richiesta predefinita non è sufficiente per evitare XSS, ma molto dipende dai dettagli.

La convalida della richiesta predefinita filtra solo caratteri standard come < o%, ma a seconda di come si rendono i risultati, è ancora possibile creare qualcosa che verrà eseguito. Guarda i diversi vettori di attacco per XSS. Ci sono molte possibilità per fare XSS anche con set di caratteri ristretti.

    
risposta data 27.06.2013 - 00:36
fonte

Leggi altre domande sui tag