2016-04-04 2 views
1

Ich habe diesen komischen Fall kennengelernt, in dem ein Benutzer ein Kennwort mit den Symbolen '<' und '>' eingibt.MVC-Passwortfeld-Eingabe ausgelöst "Ein potenziell gefährlicher Request.Form-Wert wurde vom Client erkannt"

Mit Standard-Formularvalidierung Funktionalität von MVC 5, erhalte ich die Fehlermeldung:

A potentially dangerous Request.Form value was detected from the client (Password="1 < 2 3 a @ < i O")

(auf dem obigen Fehler absichtlich Leerzeichen Ich habe in dem Kennwortwert, sonst kann es nicht angezeigt werden ... es ist potenziell gefährlich tatsächlich ... !!!)

Jetzt weiß ich, dass mvc automatisch die Benutzereingabe codiert Cross-Site-Scripting zu vermeiden, so in einem normalen Textfeld, hätte ich nicht ein solches Problem, aber in einem Passwort Feld ist es offensichtlich nicht automatisch codiert (wie es nicht sollte!).

Eine schnelle (vielleicht schmutzig) Abhilfe wäre, dass ich [AllowHtml] Dekorateur auf dem Passwort-Feld, auf dem Modell ermöglichen.

Eine weitere schnelle (vielleicht dirtyer) Abhilfe wäre, dass ich [ValidateInput(false)] Dekorateur auf der Controller-Aktion zu aktivieren.

Aber ich möchte einen Rat, der mein Problem löst und keine möglichen anderen Löcher in meinem System öffnet ... Irgendwelche Vorschläge, bitte ??

Antwort

0

Für einen Login-Controller, Validierung ausgeschaltet ist in Ordnung. Das Passwort wird nie angezeigt oder irgendwo gespeichert, und wenn Sie den Benutzernamen irgendwo anzeigen, können Sie einfach sicherstellen, dass er richtig codiert ist. Die Standard-Eingabevalidierung hat offensichtlich keine Ahnung, wie Sie die Daten verwenden, die eingegeben worden ist, hat so ziemlich paranoid sein. Es ist nicht so, dass wenn Sie es ausschalten, Ihre Anwendung automatisch weniger sicher macht.

+0

Vielen Dank für die Antwort! Aber ich denke, wenn das, was du sagst, wahr ist, dann hätte der MVC standardmäßig die Überprüfung der Passwortfelder deaktiviert ... es muss eine spezielle Option geben ... dh ein Dekorator, der "AllowSpecialCharacters" im Passwortfeld angibt, oder so ähnlich – cnom

+0

Was ist mit der Aktion setpassword()? –

Verwandte Themen