J'utilise $ _SERVER ['HTTP_REFERER'] pour générer un lien arrière dynamique.
<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a>
Est-il raisonnablement sûr de le faire?
J'utilise $ _SERVER ['HTTP_REFERER'] pour générer un lien arrière dynamique.
<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a>
Est-il raisonnablement sûr de le faire?
Pas comme ça.
Peut ne pas être présent. (Il se peut que certains paquets de pare-feu cachent le référent pour des raisons de confidentialité, violant la spécification HTTP en cours de route)
Vous devez exécuter tout ce qui provient de l'extérieur de votre système via htmlspecialchars
pour vous prémunir contre les attaques XSS (bien que, IIRC, le referer ne devrait jamais avoir de caractères dangereux car ils devraient être sûrs d'URL, vous devriez garder l'habitude de toujours être prudent). Les navigateurs viennent avec des boutons de retour, il n'est pas nécessaire d'essayer de dupliquer leurs fonctionnalités (surtout quand, avec ceci, si l'utilisateur clique sur un lien marqué "retour" il ne les reprend pas dans leur histoire, donc cliquer sur le bouton normal de retour les emmènera conceptuellement vers l'avant).
Il peut ne pas être défini du tout, pas seulement vide. –
Bon point, édité pour être plus clair. – Quentin
Il peut être sûr, mais il est pas fiable: en raison de la HTTP spec, HTTP_REFERER
est facultative (certains clients n'envoient pas cet en-tête du tout, et quelques bandes de logiciels « de sécurité » ceci de toute requête HTTP), et il existe de nombreuses façons de modifier cet en-tête. Certains navigateurs envoient la page de renvoi, d'autres envoient une chaîne vide, d'autres n'envoient pas du tout, d'autres peuvent envoyer des données fausses, d'autres peuvent envoyer Tante Mathilde; et de plus, vous ne pouvez pas dire si vous obtenez des données valides dans cet en-tête ou non.
Donc, non, je ne ferais jamais confiance que HTTP_REFERER
contient la page précédente, et vous non plus.
+1 J'ai eu le premier fichier référencé dans le dernier ensemble de pages HTML demandé comme référant plusieurs fois, généralement 'favicon.ico' ou un fichier css. Cela est arrivé dans Firefox et Chrome. –
Ce n'est pas le cas. Il peut ne pas être défini, indésirable ou même dangereux.
concider les éléments suivants:
Sûr comme protégé contre les attaques XSS, ou sûr comme dans "contiendra toujours une valeur valide"? –
REFERER n'est pas toujours présent, donc votre méthode ne fonctionnera pas dans certains cas. –