102 votes

Détermination de Referer en PHP

Quel est le moyen le plus fiable et le plus sûr de déterminer quelle page soit envoyée, ou appelée (via AJAX), la page actuelle. Je ne souhaite pas utiliser les $_SERVER['HTTP_REFERER'] , en raison de la (manque de) fiabilité, et j'ai besoin que la page appelée appelle uniquement des requêtes provenant de mon site.

Edit: Je cherche à vérifier qu'un script qui effectue une série d'actions est appelé à partir d'une page de mon site Web.

93voto

Seldaek Points 12311

REFERER est envoyé par le navigateur du client dans le cadre du protocole HTTP et n’est donc pas fiable. Il se peut que ce ne soit pas là, que ce soit contrefait, vous ne pouvez pas y croire si c'est pour des raisons de sécurité.

Si vous souhaitez vérifier si une requête provient de votre site, vous ne pouvez pas le faire, mais vous pouvez vérifier que l'utilisateur s'est déjà rendu sur votre site et / ou qu'il est authentifié. Les cookies sont envoyés dans les demandes AJAX afin que vous puissiez compter sur cela.

23voto

We0 Points 592

Ce que j’ai trouvé meilleur est un jeton CSRF et enregistrez-le dans la session pour les liens où vous devrez vérifier le parrain.

Donc si vous générez un rappel FB puis il devrait ressembler à ceci :

Puis les index.php ressemblera à ceci :

Je ne connais pas de sites sécurisés que faire l’équivalent de cela pour toutes les pages sécurisées.

17voto

AMB Points 483
 if (!empty($_SERVER['HTTP_REFERER'])){
    header("Location: ".$_SERVER['HTTP_REFERER']);}
else
{
   header("Location: index.php");
}

0voto

gizmo Points 8528

Il n'y a pas de moyen fiable pour vérifier cela. C'est vraiment sous la main du client de vous dire d'où ça vient. Vous pouvez imaginer utiliser des informations de cookie ou de session uniquement sur certaines pages de votre site Web, mais vous risqueriez de rompre l'expérience utilisateur avec les signets.

0voto

justnajm Points 557

Après avoir lu tous les faux problèmes de référent, il ne nous reste plus qu’une option: la page que nous souhaitons suivre en tant que référent doit être conservée en session, et ajax appelée puis en enregistrant la session si elle a la valeur de la page et en effectuant l’action autrement no action.

Tandis qu’il demande par la suite une page différente, définissez la valeur de la session de référence sur null.

Rappelez-vous que la variable de session est définie sur la demande de page désirée uniquement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X