web-dev-qa-db-fra.com

Quelle est la longueur maximale sécurisée qu'un segment dans un chemin d'URL devrait être?

Beaucoup de gens demandent "Quelle est la longueur maximale que peut avoir un [~ # ~] url [~ # ~] ?" mais pour autant que je sache, personne ne pose la question:

Quelle est la longueur maximale sécurisée qu'un segment dans un chemin d'URL devrait être?

Je pense que cette question est tout aussi importante.

Cette question est une question générale visant à prendre en charge le plus grand nombre possible de systèmes prêts à l'emploi.

En C #, vous pouvez obtenir une liste de segments de chemin d'URL à partir d'une demande entrante. Des modules de sécurité sont installés. Quelle est la longueur maximale d'un segment dans un chemin d'URL pour ce scénario?

J'ai lu sur la page suivante que des segments de chemin d'URL de plus de 260 caractères peuvent causer des problèmes dans les modules ASP.NET personnalisés:

Dans les navigateurs Web, vous tapez des segments d’URL quel que soit le site Web visité, / est un segment de chemin d'URL généralement mappé à une page d'accueil. Avec Internet Explorer, Chrome et Firefox étant des navigateurs populaires, quelle est la longueur maximale d’un segment de chemin d’URL pris en charge?)

La ressource suivante indique que la longueur maximale d’un chemin d’URL diffère d’un navigateur à l’autre et que le chiffre est parfois assez élevé:

Mais ceci est un chemin et non un segment de chemin.

Je suis également conscient du fait que lors de la réécriture des chemins, la longueur du chemin du système de fichiers sous-jacent entre en jeu et que le chiffre de parcage de balle de ce que je peux voir pris en charge est d'environ 255 caractères dans un système d'exploitation * nix.

D'autres considérations incluent la longueur maximale d'un segment de chemin d'URL dans une table de base de données. Par exemple, dans MySQL, une colonne varchar peut contenir jusqu'à 255 caractères, mais existe-t-il une hypothèse, les gens stockent-ils des segments de chemins dans des tables dans MySQL ou stockent-ils des URL complètes dans des colonnes varchar? Cela pourrait-il signifier que 255 caractères sont trop longs pour un segment de chemin d'URL?

Existe-t-il une spécification W3C sur la longueur d'un segment de chemin d'URL, car je ne vois rien?

J'ai lu la spécification W3C sur les URI, mais encore une fois, je n'ai rien vu qui puisse être utile:

Je suis assez décontenancé par le fait qu'il n'y a pas de norme définie sur la longueur d'un segment de chemin d'URL, alors peut-être qu'il me manque quelque chose?

Je cherche vraiment autant d'informations que possible sur ce que différents systèmes prennent en charge et sur ce qui est considéré comme une longueur sûre pour un segment de chemin d'URL.

32
Matthew Bonner

Peut-être lié à Quelle est la longueur maximale d'une URL dans différents navigateurs?

En bref

Selon la spécification HTTP, il n'y a pas de limite à la longueur d'une URL. Gardez vos URL sous 2048 caractères; Cela garantira que les URL fonctionnent dans toutes les configurations de clients et de serveurs. En outre, les moteurs de recherche tels que les URL doivent rester sous environ 2 000 caractères.

Chrome a une limite de 2 Mo pour les URL, IE8 et 9 ont une limite de 2084 caractères. Donc, tout va dans le sens de garder vos URL limitées à env. 2000 caractères.

De plus, du point de vue de la convivialité, les URL trop longues ne sont pas utilisables/lisibles par les utilisateurs.

Cependant, le nom de domaine a un max. longueur de 255 caractères. Donc, pour être sûr, le max. la longueur d'un segment d'URL serait d'environ 1745 caractères, étant donné que votre URL existe sur 1 segment.

48
Gerrit Bertier

Il n'y a pas de telle limite de spécification. Il peut y avoir des limites d'implémentation , mais vous ne les trouverez pas dans les spécifications.

Nit: les URI sont définis par l'IETF, pas le W3C, et la spécification actuelle est RFC 3986.

5
Julian Reschke

Le longueur de l'URL ne devrait pas dépasser 2K (pratique courante). Le chemin du segment peut être n’importe quelle taille .

La longueur du domaine ne doit pas dépasser 255 caractères (voir RFC3986 ). Les limites n'existent que pour la mise en œuvre. Les segments attachés aux URL ne sont limités que dans des cas particuliers (l'ancien usage commun).

De nos jours, presque toutes les demandes passent par un fichier pour la règle de réécriture , la longueur du segment n'a donc pas d'importance. Après cela, le segment est conservé dans une variable qui peut être très grande, il n'y a donc pratiquement aucune limite.

2
vitalii