web-dev-qa-db-fra.com

Quels caractères spéciaux sont sécuritaires à utiliser dans les URL?

Quels caractères spéciaux sont sécuritaires à utiliser dans les URL?

13
YOU

Les caractères sécurisés sont a-z, A-Z, 0-9 et _ - (trait de soulignement et moins), ainsi que les caractères réservés utilisés pour les paramètres.

D'autres personnages donneront des problèmes dans une certaine mesure. exemple: si un paramètre est un tableau ?param=array[content] c'est-à-dire qu'il affichera une URL avec les crochets URL codés, ce qui parait laid et impossible à dicter.

Mais le problème n'est pas seulement que c'est moche, disons que vous avez un jpg avec un caractère à côté des plus sûrs, plusieurs fois, le navigateur ne pourra pas le télécharger avec un 404. C'est un problème d'anciens navigateurs et de certains navigateurs mobiles.

Comment tester cela?

  • mettre un tas d'images/js/css avec les caractères que vous voulez tester dans les noms d'une page publique avec de nombreux visiteurs
  • Faire en sorte que la page 404 vous envoie un courrier électronique chaque fois que vous recevez un hit

J'ai une boîte de réception avec 14 000 courriels prouvant mon point.

10
The Disintegrator

Les caractères suivants ont une signification particulière dans le composant de chemin de votre URL (le composant de chemin est tout ce qui précède le '?'):

  ";" | "/" | "?"

En plus de ceux-ci, les caractères suivants ont une signification particulière dans la partie requête de votre URL (tout ce qui suit "?"). Par conséquent, s'ils sont après le '?' vous devez leur échapper:

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

Pour une explication plus détaillée, voir le RFC .

11
Thomas Bonini

Les réponses ici sont bonnes, mais il convient de mentionner une autre exception, à savoir les caractères non anglais. Référencement cette question de SF ici , les caractères tels que ñ (comme en Español) sont parfaitement légitimes, SI ils ont été codés correctement dans votre DNS.

Vous devez utiliser Punycode dans votre DNS pour les résoudre dans les navigateurs modernes (l'entrée pour español est xn--espaol-zwa) mais ils sont maintenant parfaitement sûrs à utiliser dans les noms de domaine, car ils ' Il est également facile pour les non-anglophones de taper.

3
Mark Henderson