Les URL contiennent plus de structure qu'il n'y paraît
Une destination comprend un schéma, un hôte, un port facultatif, un chemin, une requête et un fragment. Le traiter comme une chaîne arbitraire rend la validation incohérente et peut introduire un comportement dangereux ou surprenant.
Analysez la valeur complète une fois avec un analyseur d'URL testé, puis appliquez des règles au résultat structuré.
Les fragments n'ont pas leur place dans la requête du serveur
Un navigateur conserve le fragment après le signe dièse et ne l'envoie pas au serveur de destination. Un service de redirection peut le conserver pour la navigation du client, mais une plateforme peut intentionnellement supprimer des fragments lorsque son contrat les traite comme un état d'interface utilisateur local.
Quelle que soit la politique choisie, elle doit être visible et testée. L'encodage silencieux du hachage dans un chemin modifie la destination et constitue un bug de normalisation courant.
Les destinations privées nécessitent une attention particulière
Les hôtes de bouclage, privés, de lien local et internes peuvent devenir dangereux lorsqu'une plate-forme récupère également des aperçus ou effectue des contrôles de santé. Les rejeter avant le stockage simplifie la frontière de sécurité.
La résolution du nom d'hôte nécessite des vérifications supplémentaires dans un outil de récupération isolé, car un nom d'hôte d'apparence publique peut ensuite être résolu en une adresse privée. La validation de chaîne à elle seule ne constitue pas une défense SSRF complète.