Aller au contenu principal

4. Origin of a URI (Origine d'un URI)

4. Origin of a URI (Origine d'un URI)

L'origine d'un URI est la valeur calculée par l'algorithme suivant:

  1. Si l'URI n'utilise pas un élément hiérarchique comme autorité de nommage (voir [RFC3986], Section 3.2) ou si l'URI n'est pas un URI absolu, alors générer un nouvel identifiant globalement unique et retourner cette valeur.

    NOTE: L'exécution de cet algorithme plusieurs fois pour le même URI peut produire des valeurs différentes à chaque fois. Typiquement, les agents utilisateurs calculent l'origine d'un document HTML, par exemple, une fois et utilisent cette origine pour les vérifications de sécurité ultérieures plutôt que de recalculer l'origine pour chaque vérification de sécurité.

  2. Soit uri-scheme le composant de schéma de l'URI, converti en minuscules.

  3. Si l'implémentation ne prend pas en charge le protocole donné par uri-scheme, alors générer un nouvel identifiant globalement unique et retourner cette valeur.

  4. Si uri-scheme est "file", l'implémentation PEUT retourner une valeur définie par l'implémentation.

    NOTE: Historiquement, les agents utilisateurs ont accordé au contenu provenant du schéma file une quantité énorme de privilèges. Cependant, accorder à tous les fichiers locaux des privilèges aussi étendus peut conduire à des attaques d'escalade de privilèges. Certains agents utilisateurs ont réussi à accorder aux fichiers locaux des privilèges basés sur les répertoires, mais cette approche n'a pas été largement adoptée. D'autres agents utilisateurs utilisent des identifiants globalement uniques pour chaque URI de fichier, ce qui est l'option la plus sûre.

  5. Soit uri-host le composant hôte de l'URI, converti en minuscules (en utilisant la règle de classement i;ascii-casemap définie dans [RFC4790]).

    NOTE: Ce document suppose que l'agent utilisateur effectue le traitement et la validation IDNA (Internationalizing Domain Names in Applications) lors de la construction de l'URI. En particulier, ce document suppose que uri-host ne contiendra que des étiquettes LDH car l'agent utilisateur aura déjà converti toutes les étiquettes non-ASCII en leurs A-labels correspondants (voir [RFC5890]). Pour cette raison, les politiques de sécurité basées sur l'origine sont sensibles à l'algorithme IDNA employé par l'agent utilisateur. Voir la Section 8.4 pour plus de discussion.

  6. S'il n'y a pas de composant port de l'URI:

    1. Soit uri-port le port par défaut pour le protocole donné par uri-scheme.

    Sinon:

    1. Soit uri-port le composant port de l'URI.
  7. Retourner le triplet (uri-scheme, uri-host, uri-port).