Vogliamo bloccare gli utenti che inseriscono html o javascript in una casella di testo.Cerca script nella casella di testo asp.net
Possiamo solo analizzare l'input e controllare le parentesi angolari. Stavo chiedendo c'è un modo migliore per farlo?
Vogliamo bloccare gli utenti che inseriscono html o javascript in una casella di testo.Cerca script nella casella di testo asp.net
Possiamo solo analizzare l'input e controllare le parentesi angolari. Stavo chiedendo c'è un modo migliore per farlo?
Ho scoperto che la sostituzione delle parentesi angolari con parentesi angolari codificate risolve molti problemi. Ecco uno reference per tutti i modi in cui le persone possono utilizzare lo script del sito. Fare una regex per fermare qualsiasi tipo di HTML e/o Script è praticamente impossibile.
+1 Non "controllare" nulla, scappalo correttamente invece sulla via d'uscita. Gli utenti dovrebbero essere in grado di digitare alcune parentesi angolari e dovrebbero apparire come parentesi angolari normali nella pagina come questa: < >. Il metodo corretto si chiama HtmlEncode (se i controlli .NET non escaping automaticamente per te nel tuo modello) e influenza anche e commerciali e virgolette (anche per il testo nei valori degli attributi). – bobince
È possibile utilizzare un validatore di espressioni regolari per verificare l'input?
Se si imposta Page.ValidateRequest = true, questo verrà interrotto.
Da .net versione 1.1 in poi (penso) questo è impostato su true per impostazione predefinita.
ValidateRequest è completamente, completamente falso e tradisce un pericoloso fraintendimento del problema. È simile al magic_quotes_gpc, molto deriso di PHP, nel tentativo di risolvere un problema di output (escape) nel livello di input. Come le citazioni magiche, interrompe la tua applicazione (ad esempio se si trovasse qui in SO, non saremmo in grado di parlare di ''
Non nego nulla di ciò che dici e in quasi tutte le nostre applicazioni è disattivato a livello globale e qualsiasi input/output viene convalidato manualmente. Tuttavia, questa domanda dice "Vorremmo impedire agli utenti di inserire html o javascript in una casella di testo." ValidateRequest fa questo. –
Infatti. È la risposta giusta ... potrebbe non essere la domanda giusta! – bobince
Page.ValidateRequest interromperà questa operazione a meno che non venga disattivato.
Tuttavia, le linee guida OWASP (oltre a tutte le linee guida di sicurezza competenti) indicano che NON si deve cercare di limitare i caratteri errati durante la convalida, ma si deve filtrare in modo che vengano utilizzati solo caratteri specificatamente consentiti.
http://en.wikipedia.org/wiki/Secure_input_and_output_handling
http://www.owasp.org/index.php/Top_10_2007-A1
Per le buone pratiche di codifica sicure vorrei iniziare qui e Contrassegna il sito per riferimento futuro. http://www.owasp.org/index.php/Top_10_2007
Mi sono imbattuto in questa utility html. Il codice utilizza una lista bianca di tag che è possibile inserire. Lo script quindi formatta il testo di input e rimuove tag e script che potrebbero essere utilizzati per attacchi di cross site scripting.
Per i vostri scopi non è possibile avere alcun tag nella lista bianca.
Buona domanda: mostra che stai pensando alla sicurezza. +1. – David