2009-05-02 26 views
20

Gibt es eine formelle Einschränkung, welche Zeichen in URL-Parametern zulässig sind?HTTP-URL - zulässige Zeichen in Parameternamen

Ich habe gelesen RFC3986 ("Uniform Resource Identifier (URI): Generische Syntax"), kam aber zu keiner endgültigen Schlussfolgerung.

Ich weiß, es gibt praktische Grenzen, aber wäre es tatsächlich etwas zu tun, wie verboten:

param with\funny<chars>=some_value

solange ich es richtig entkommen:

param%20with%1cfunny%3cchars%3e=some_value

Antwort

9

In den URI-Spezifikationen gibt es keine Beschränkungen für die Namen von Escape-Parametern. Es kann jedoch Einschränkungen in der serverseitigen Software geben, die Sie verwenden. Dies gilt insbesondere, wenn Sie "hausgemachte" Skripts verwenden, um URIs zu interpretieren.

+0

Genau deshalb habe ich gefragt ... http://stackoverflow.com/questions/814613/how-to-read-data-from-url-using-javascript - Ich denke, meine Antwort würde ein benötigen Überholung, um es in ungewöhnlichen Situationen zu korrigieren. – Tomalak

+0

Ah, das macht die Situation wesentlich komplizierter. Vor allem, da '&' als Begrenzer nur eine Konvention ist; andere könnten stattdessen verwendet werden, z.B. ',' und ';' wurden früher oft benutzt. Außerdem unterstützen viele Server-Engines (PHP, Rails, ...) verschachtelte Argumente, also wäre dies ein legaler URI mit Abfrage: http://example.com/?a=b;c[1]=x;c[2] = y ... Viele Webanwendungen verwenden diese Abfragenotation für Formulardaten (Optionen, Kontrollkästchen usw.), um arrayähnliche Daten zu erhalten. –

+0

Also ich denke, es läuft darauf hinaus, "es gibt keine einzige korrekte Funktion Parameter aus einer URL zu ziehen" - es sei denn, Sie sind bereit zu akzeptieren, dass "c [1] = x" ist eine serverseitige Konvention und der Parameter Sie suchen, ist * in der Tat * genannt "c [1]" auf dem Client (was sachlich richtig wäre, aber für diejenigen, die an serverseitige Programmierung gewöhnt sind, komisch ...). – Tomalak

1

Es gibt reservierte Zeichen für URLs , aber solange du fliehen kannst (urlencode), sollte es dir gut gehen.

Je nach verwendetem Framework erhalten Sie möglicherweise Ausnahmen, wenn Sie versuchen, verdächtige Werte einzugeben. ASP.NET verfügt über eine Inhaltsfilterung, die Ausnahmen auslöst, wenn Sie versuchen, "unsichere" Daten wie Skripte oder HTML zu übermitteln. Dies ist jedoch eine Eigenschaft des Frameworks und keine Einschränkung oder Regel, die durch die URL-Syntax erzwungen wird.

4

Sie sollten auch RFC2396 lesen. Es scheint informativer als RFC3986 zu sein.

+1

Abschnitt 3.4. ("Abfrage-Komponente") hat es: "Die Abfrage-Komponente ist eine Zeichenfolge von Informationen, die von der Ressource interpretiert werden." Dies würde im Grunde bedeuten "alles geht", genau wie ich dachte. – Tomalak

+0

Es ist leider nicht HTTP-spezifisch. Aber ich denke, hier gibt es keinen Standard, nur Konvention. – Tomalak

Verwandte Themen