La mia applicazione web è costruita con ASP.Net MVC5. Uno dei metodi accetta parametri di stringa di query. I test di sicurezza hanno segnalato che accetta stringhe di query dannose e vengono visualizzati nel corpo senza alcuna modifica.
l'url inclusi i parametri Query vengono aggiunti all'output html dal pager MVCC per la paginazione.
descrizione dettagliata di seguito
Il nome di un parametro URL fornito arbitrariamente viene copiato nel valore di un attributo di tag HTML incapsulato tra virgolette doppie. Il payload 7dc29"style="behavior:url(#default#time2)"onbegin="alert(1)"2d524
è stato inviato in nome di un parametro URL fornito arbitrariamente. Questo input è stato echeggiato non modificato nella risposta dell'applicazione.
Questo attacco proof-of-concept dimostra che è possibile iniettare JavaScript arbitrario nella risposta dell'applicazione. L'attacco proof-of-concept dimostrato utilizza un'espressione valutata dinamicamente con un attributo style per introdurre JavaScript arbitrario nel documento. Nota che questa tecnica è specifica per Internet Explorer e potrebbe non funzionare su altri browser.
Ho un filtro QueryString per le voci della lista nera @"</?\w+((\s+\w+(\s*=\s*(?:"".*?""|'.*?'|[^'"">\s]+))?)+\s*|\s*)/?>", "<img", "<iframe", "\";", "¼script¾", "embed src"
Inoltre, sanitizzo il parametro usando Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment()
La mia domanda: è sufficiente per proteggere l'attacco XSS? O come posso rimuovere la stringa di query dannosa?