Ähnlich wie this question aber es ist mir egal, welche Zeichen den Fehler auslösen/verursachen werden. Ich bin eher neugierig, welche Methode ich aufrufen kann, um selbst zu überprüfen, ob die aktuelle Zeichenfolge die obige Fehlermeldung auslöst.Wie überprüft man, ob der String ausgelöst wird "Ein potentiell gefährlicher Request.Form-Wert wurde gefunden ..." Fehler
Um ein bisschen Hintergrundwissen zu geben, erstelle ich zufällige Passwörter, wenn ein Benutzer sie vergisst und einen Reset benötigt. Leider hat der zufällige Passwortgenerator "versehentlich" einen mit &#
darin neu erstellt. Dies führte zum Brechen der Seite, wenn der Benutzer versuchte, sich mit der Seite anzumelden.
Wie in vielen Beiträge rund um dieses Thema erwähnt, ValidateRequest=false
(oder <httpRuntime requestValidationMode="2.0" />
für .NET 4.0) verwendet werden, .NET deaktivieren für diese Taten überprüft, aber ich sehe keinen Grund, diese zusätzliche Schicht zu verlieren Sicherheit, wenn ich derjenige bin, der die Saite an erster Stelle erzeugt. Und dem Zufallsgenerator einfach zu sagen, dass er auf einer unvollständigen Liste (<
, &#
, etc) re-randomieren soll, scheint nicht die sauberste Lösung zu sein, daher würde ich gerne dieselbe Methode verwenden, die .NET verwendet.
Microsofts Erklärung, welche Exploits in Frage stehen und was gegen sie unternommen wird here.
This guy spricht über die Suche nach einer Funktion namens IsDangerousString
nach dem Graben mit Reflektor, aber ich bin nicht in der Lage, diese Funktion zu finden, um es zu verwenden. Er bezieht sich auch auf .NET 1.1 und ich arbeite mit .NET 3.5
Interessante Frage, aber ich sehe keinen Grund, warum Sie solche unverständliche Zeichen umfassen würde. Ich würde wahrscheinlich die RandomNumberGenerator-Klasse verwenden, um ein Byte [] zu füllen und dann einen Z-Base32-Encoder zu verwenden, um die Bytes zu einer Zeichenfolge zu codieren. – Shelakel
Sie wissen, die "Exploit" -Charakter, den Sie wollen, warum nicht Html Kodieren Sie sie vor dem Post und dann html dekodieren sie zurück – HatSoft
@Shelakel Sicher gibt es viele andere Möglichkeiten, zufällige Passwörter zu generieren. Leider müssen wir jedoch alle 4 der 4 Zeichen (Kleinbuchstaben, Großbuchstaben, Zahlen, Sonderzeichen) mit Passwörtern für dieses Projekt erfüllen. Natürlich könnte ich nur die anstößigen "obskuren" Zeichen entfernen, aber da die Spezifikation nicht sehr klar ist, möchte ich die gleiche Funktion verwenden, die das System überprüfen soll. – Mercurybullet