7 Stimmen

ASP.Net URL-Kodierung

Ich implementiere URL Rewriting in ASP.net und meine URLs verursachen mir eine Welt von Problemen.

Die URL wird aus einer Datenbank mit Abteilungen und Kategorien generiert. Ich möchte, dass die Mitarbeiter in der Lage sind, der Datenbank Elemente mit beliebigen Sonderzeichen hinzuzufügen, ohne dass die Website dadurch beschädigt wird.

Ich kodiere die Daten, bevor ich die URLs aufbaue.

Es gibt mehrere Probleme...

  1. IIS dekodiert die URL, bevor sie .net erreicht, was es unmöglich macht, irgendetwas mit einem "/" darin richtig zu analysieren.
  2. ASP.net wird durch den Url verwirrt, so dass "~" auf bestimmten Seiten unbrauchbar ist
  3. Ich bin vom eingebauten Testserver auf meinen lokalen IIS-Server (XP-Rechner) umgezogen, und jede URL, die ein verschlüsseltes & (%26) enthält, gibt mir einen "Bad Request"-Fehler.
  4. UrlEncode lässt einige Unterbrechungszeichen wie '.' unberührt.

Ich habe zwei andere Beiträge zu diesem Thema verfasst, damals sah ich nur die kleinen Probleme, nicht das große Problem im Vorfeld. Ich habe einige Tricks in der Registry gefunden, um das "Bad Request"-Problem zu lösen, aber ich werde in einer Shared-Hosting-Umgebung arbeiten, was das Ganze nutzlos macht. Ich weiß auch, dass dies ein Fix für ein Sicherheitsproblem ist, also möchte ich es nicht unbedingt umgehen, ohne zu wissen, was für eine Büchse Würmer ich damit öffne.

Anstatt zu versuchen, .net zu zwingen, mir die rohe URL zu übergeben, oder IIS-Einstellungen zu überschreiben, möchte ich wirklich sichere URLs in erster Linie machen.

Ich werde beachten, ich habe versucht, AntiXss.URLEncode, HttpUtility.URLEncode, URI.EscapeDataString. Ich habe sogar so dumme Sachen wie doppeltes URLEncodng ausprobiert. Gibt es ein Dienstprogramm, das tut, was ich brauche, oder muss ich wirklich meine eigene Rolle. Ich erwäge sogar, etwas Hacky wie das Ersetzen der % mit einer ungewöhnlichen Zeichenfolge zu tun. Das Endergebnis sollte zumindest lesbar sein, was der Punkt der Verwendung von URL-Rewriting in den ersten Platz war.

Entschuldigung für den langen Beitrag - ich wollte nur sicherstellen, dass ich alle notwendigen Details angegeben habe. Ich kann nicht scheinen, um alle relevanten Informationen zu diesem zu finden, und es scheint, wie es ein gemeinsames Problem sein würde - so vielleicht bin ich etwas groß übersehen. Vielen Dank für Ihre Hilfe und Ihre Geduld mit dieser langen Erklärung!


Edit für Klarheit:

Wenn ich sage, dass die URLs aus einer Datenbank erstellt werden, meine ich damit, dass die Verzeichnisstruktur aus den Abteilungen und Kategorien in meiner Datenbank konstruiert wird.

Einige Beispiel-URLS -

Mystore/Refrigeration/Bar+Kühlschrank.aspx
Mystore/Kochgeräte+Ausrüstung.aspx
Mystore/Küche/Schneide+Bretter.asxpx

Die Probleme treten auf, wenn ich eine Abteilung wie "Beverage & Bar" oder "Pastry/Decorating" verwende, um meine URL zu konstruieren. Obwohl diese zuerst kodiert werden, verursachen sie die oben genannten Probleme.

Meine Handler sind bereits implementiert und funktionieren bis auf die Probleme mit der Sonderzeichenkodierung einwandfrei.

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