Es wäre viel schneller und einfacher zu fragen, welche Sonderzeichen in einer URL nicht sicher sind (siehe Antwort von Andreas Bonini unten).
Mark Hatton
2
Die Frage, was unsicher ist, ist ebenso schwer zu beantworten: Nicht-ASCII-Zeichen müssen in Prozent codiert sein.
Neo
2
@neo: nein, tut es nicht: O
Thomas Bonini
Antworten:
10
Die sicheren Zeichen sind az, AZ, 0-9 und _ - (Unterstrich und Minus), abgesehen von den reservierten Zeichen, die für die Parameter verwendet werden.
Andere Charaktere geben in gewissem Maße Probleme. Beispiel: Wenn ein Parameter ein Array ist, ?param=array[content]wird eine URL in eckigen Klammern angezeigt, die hässlich und unmöglich zu diktieren ist.
Aber das Problem ist nicht nur, dass es hässlich ist. Nehmen wir an, Sie haben ein JPG mit einem Zeichen neben den sichereren. Oft kann der Browser es nicht herunterladen und bekommt ein 404. Dies ist ein Problem älterer Browser und einiger mobiler Browser.
Wie teste ich das?
Setzen Sie eine Reihe von Bildern / js / css mit den Zeichen, die Sie in den Namen testen möchten, auf eine öffentliche Seite mit vielen Besuchern
Lassen Sie die 404-Seite bei jedem Treffer eine E-Mail senden
Ich habe einen Posteingang mit 14000 E-Mails, die meinen Standpunkt belegen.
Nun, anstelle von "sicheren Zeichen" würde ich "extrem sichere Zeichen" sagen - die Spezifikation erlaubt mehr, aber ich stimme Ihnen zu, dass es besser ist, hier konservativ zu sein.
Jeff Atwood
2
Was ist los mit Punkt?
BlueWhale
11
Die folgenden Zeichen haben in der Pfadkomponente Ihrer URL eine besondere Bedeutung (die Pfadkomponente steht alles vor dem '?'):
";" | "/" | "?"
Darüber hinaus haben die folgenden Zeichen im Abfrageteil Ihrer URL eine besondere Bedeutung (alles nach '?'). Deshalb, wenn sie nach dem '?' du musst ihnen entkommen:
Aus Gründen der Klarheit ist diese Antwort natürlich das Gegenteil der Frage. In der Frage wird gefragt, welche Zeichen sicher sind und welche nicht. Da es schwierig ist, die ursprüngliche Frage zuverlässig zu beantworten, sollte die Frage möglicherweise so bearbeitet werden, dass sie umgekehrt gestellt wird und mit dieser Antwort übereinstimmt.
Mark Hatton
3
Die Antworten hier sind gut, aber es gibt noch eine Ausnahme, die meiner Meinung nach erwähnenswert ist - nicht-englische Zeichen. Wenn Sie hier auf diese SF-Frage verweisen , sind Zeichen wie ñ (wie in Español) absolut legitim, WENN sie in Ihrem DNS korrekt codiert wurden.
Sie müssen Punycode in Ihrem DNS verwenden, damit sie in modernen Browsern aufgelöst werden können (der Eintrag für español lautet xn--espaol-zwa), aber diese sind jetzt absolut sicher für die Verwendung in Domain-Namen, da sie auch von Nicht-Englisch-Sprechern leicht eingegeben werden können .
Antworten:
Die sicheren Zeichen sind az, AZ, 0-9 und _ - (Unterstrich und Minus), abgesehen von den reservierten Zeichen, die für die Parameter verwendet werden.
Andere Charaktere geben in gewissem Maße Probleme. Beispiel: Wenn ein Parameter ein Array ist,
?param=array[content]
wird eine URL in eckigen Klammern angezeigt, die hässlich und unmöglich zu diktieren ist.Aber das Problem ist nicht nur, dass es hässlich ist. Nehmen wir an, Sie haben ein JPG mit einem Zeichen neben den sichereren. Oft kann der Browser es nicht herunterladen und bekommt ein 404. Dies ist ein Problem älterer Browser und einiger mobiler Browser.
Wie teste ich das?
Ich habe einen Posteingang mit 14000 E-Mails, die meinen Standpunkt belegen.
quelle
Die folgenden Zeichen haben in der Pfadkomponente Ihrer URL eine besondere Bedeutung (die Pfadkomponente steht alles vor dem '?'):
Darüber hinaus haben die folgenden Zeichen im Abfrageteil Ihrer URL eine besondere Bedeutung (alles nach '?'). Deshalb, wenn sie nach dem '?' du musst ihnen entkommen:
Eine ausführlichere Erklärung finden Sie im RFC .
quelle
Die Antworten hier sind gut, aber es gibt noch eine Ausnahme, die meiner Meinung nach erwähnenswert ist - nicht-englische Zeichen. Wenn Sie hier auf diese SF-Frage verweisen , sind Zeichen wie ñ (wie in Español) absolut legitim, WENN sie in Ihrem DNS korrekt codiert wurden.
Sie müssen Punycode in Ihrem DNS verwenden, damit sie in modernen Browsern aufgelöst werden können (der Eintrag für español lautet
xn--espaol-zwa
), aber diese sind jetzt absolut sicher für die Verwendung in Domain-Namen, da sie auch von Nicht-Englisch-Sprechern leicht eingegeben werden können .quelle