2009-09-15 15 views
5

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?

+0

Buona domanda: mostra che stai pensando alla sicurezza. +1. – David

risposta

5

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

+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

2

È possibile utilizzare un validatore di espressioni regolari per verificare l'input?

3

Se si imposta Page.ValidateRequest = true, questo verrà interrotto.

Da .net versione 1.1 in poi (penso) questo è impostato su true per impostazione predefinita.

+1

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 '' '), pur non garantendo la sua sicurezza (l'output non viene direttamente da input e filtri possono essere ingannati). – bobince

+0

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. –

+0

Infatti. È la risposta giusta ... potrebbe non essere la domanda giusta! – bobince

1

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

0

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.

Html utilty

Problemi correlati