3 Stimmen

Wie QueryString von einer href zu erhalten?

Ich versuche, XSS-Angriffe zu stoppen, also verwende ich html agility pack, um meine Whitelist zu erstellen, und Microsoft Anti-Cross Site Scripting Library, um den Rest zu bewältigen.

Jetzt bin ich dabei, alle Html-Hinweise zu kodieren. Ich erhalte eine große Zeichenkette von Html-Code, die Hrefs enthalten kann. Laut MS Library gibt es eine URL-Kodierung, aber wenn man die ganze URl kodiert, kann sie nicht verwendet werden. Im Beispiel kodieren sie also nur die Abfragezeichenfolge

UrlEncode Nicht vertrauenswürdige Eingaben werden in einer URL verwendet (zum Beispiel ein Wert in einer Querystring) Klicken Sie hier!

http://msdn.microsoft.com/en-us/library/aa973813.aspx

So jetzt meine Fragen ist, wie ich durch eine Href parsen und finden Sie die Abfragezeichenfolge. Ist es immer nur "?" dann Abfragezeichenfolge oder kann es Leerzeichen haben und auf verschiedene Arten geschrieben werden?

bearbeiten

Diese Urls werden nicht von mir geschrieben, sondern von den Nutzern, die sie weitergeben werden. Deshalb brauche ich eine Möglichkeit, um sicherzustellen, dass ich alle Abfragezeichenfolgen erhalte und nicht nur solche im gültigen Format. Wenn es mit ungültigen Formaten funktioniert, muss ich auch diese erfassen. Hackern ist es egal, ob es ein gültiges Format ist oder nicht, solange es immer noch das tut, was sie wollen.

5voto

Jon Skeet Punkte 1325502

Ich glaube es est immer der Teil nach dem ?, aber Sie können dafür einfach die Klasse Uri verwenden:

Uri uri = new Uri("http://foo.com/page.html?query");
string query = uri.Query;

Dazu gehört auch das ? selbst. Natürlich können Sie auch die anderen Bits abrufen, was praktisch sein könnte.

0voto

Amr Badawy Punkte 7153

Wie wäre es mit einer verschlüsselten Abfragezeichenfolge und in Ihrem Code können Sie sie entschlüsseln
ODER Sie können verwenden Anfrage.PfadInfo damit Sie kein ? in der Abfragezeichenfolge benötigen

0voto

DOK Punkte 31893

Hier ist ein W3C-Referenz die sich mit der Zusammensetzung von URIs mit Querystrings befasst, in der es unter anderem heißt:

Das Fragezeichen ("?", ASCII 3F hex) wird zur Abgrenzung der Grenze zwischen der URI eines abfragbaren Objekts, und einer Gruppe von Wörtern, die eine Abfrage zu diesem Objekt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X