Z których znaków specjalnych można bezpiecznie korzystać w adresie URL?

14

Z których znaków specjalnych można bezpiecznie korzystać w adresie URL?

TY
źródło
3
Byłoby o wiele szybciej i łatwiej zapytać, które znaki specjalne są niebezpieczne w użyciu w adresie URL (zgodnie z odpowiedzią Andreasa Boniniego poniżej).
Mark Hatton
2
Pytanie o to, co jest niebezpieczne, jest równie trudne do odpowiedzi: każda postać nie-ascii musi być zakodowana procentowo.
neo
2
@neo: nie, nie robi: O
Thomas Bonini,

Odpowiedzi:

10

Bezpiecznymi znakami są az, AZ, 0-9 i _ - (podkreślenie i minus), które oprócz znaków zastrzeżonych używanych dla parametrów.

Inne postacie sprawią problemy w pewnym stopniu. przykład: jeśli jeden parametr jest tablicą, ?param=array[content]tzn. pokaże adres URL w zakodowanym nawiasie kwadratowym, który wygląda brzydko i nie można go dyktować.

Problem polega nie tylko na tym, że jest brzydki, ale powiedzmy, że masz plik jpg ze znakiem obok bezpieczniejszych, wiele razy przeglądarka nie będzie mogła go pobrać, otrzymując 404. Jest to problem starszych przeglądarek i niektórych przeglądarek mobilnych.

Jak to przetestować?

  • umieść kilka obrazów / js / css ze znakami, które chcesz przetestować, w nazwach na stronie publicznej z wieloma odwiedzającymi
  • Spraw, aby strona 404 wysyłała Ci wiadomość e-mail za każdym razem, gdy trafi

Mam skrzynkę odbiorczą z 14000 e-mailami potwierdzającymi mój punkt widzenia.

Dezintegrator
źródło
5
no cóż, zamiast „bezpiecznych postaci” powiedziałbym, że „wyjątkowo bezpieczne postacie” - specyfikacja pozwala na więcej, ale zgadzam się z tobą, że lepiej być konserwatywnym.
Jeff Atwood
2
Co jest nie tak z kropką?
BlueWhale
12

Następujące znaki mają specjalne znaczenie w komponencie ścieżki adresu URL (komponent ścieżki to wszystko przed „?”):

  ";" | "/" | "?"

Oprócz nich następujące znaki mają specjalne znaczenie w części zapytania w adresie URL (wszystko po „?”). Dlatego jeśli są po „?” musisz uciec od nich:

  ":" | "@" | "&" | "=" | "+" | "$" | ","

Aby uzyskać bardziej szczegółowe wyjaśnienie, zobacz RFC .

Thomas Bonini
źródło
3
Oczywiście, dla jasności, ta odpowiedź jest przeciwieństwem pytania. Pytanie dotyczy tego, które postacie są bezpieczne, a nie te, które są niebezpieczne. Ponieważ trudno jest rzetelnie odpowiedzieć na oryginalne pytanie, pytanie należy prawdopodobnie zmodyfikować, aby zadać je na odwrót i dopasować do tej odpowiedzi.
Mark Hatton
3

Odpowiedzi tutaj są dobre, ale jest jeszcze jeden wyjątek, który moim zdaniem warto wspomnieć - znaki inne niż angielski. Odnosząc się tutaj do tego pytania SF , znaki takie jak ñ (jak w języku Español) są całkowicie uzasadnione, JEŻELI zostały poprawnie zakodowane w systemie DNS.

Musisz użyć Punycode w swoim DNS, aby je rozwiązać w nowoczesnych przeglądarkach (wpis dla español to xn--espaol-zwa), ale teraz są one całkowicie bezpieczne w nazwach domen, ponieważ są łatwe do pisania także dla osób nieanglojęzycznych .

Mark Henderson
źródło