Quel est le moyen le plus fiable et le plus sûr de déterminer quelle page a envoyé ou appelé (via AJAX) la page actuelle. Je ne veux pas utiliser le $_SERVER['HTTP_REFERER']
, à cause du (manque de) fiabilité, et j'ai besoin que la page appelée ne provienne que de requêtes provenant de mon site.
Edit: Je cherche à vérifier qu'un script qui préforme une série d'actions est appelé à partir d'une page de mon site Web.
php
http-referer
UnkwnTech
la source
la source
$_SERVER[REMOTE_ADDR]
.Réponses:
Le REFERER est envoyé par le navigateur du client dans le cadre du protocole HTTP, et n'est donc pas fiable. Il peut ne pas être là, il peut être falsifié, vous ne pouvez pas lui faire confiance si c'est pour des raisons de sécurité.
Si vous souhaitez vérifier si une demande provient de votre site, eh bien, vous ne pouvez pas, mais vous pouvez vérifier que l'utilisateur a été sur votre site et / ou est authentifié. Les cookies sont envoyés dans les requêtes AJAX afin que vous puissiez vous y fier.
la source
Ce que j'ai trouvé le mieux est un jeton CSRF et enregistrez-le dans la session pour les liens où vous devez vérifier le référent.
Donc, si vous générez un rappel FB, cela ressemblerait à ceci:
Ensuite, l'index.php ressemblera à ceci:
Je connais des sites sécurisés qui font l'équivalent de cela pour toutes leurs pages sécurisées.
la source
$_GET['token'] == $_SESSION['token']
et non$_GET['token'] !== $_SESSION['token']
?Utilisation de $ _SERVER ['HTTP_REFERER']
la source
Il n'existe aucun moyen fiable de vérifier cela. C'est vraiment sous la main du client de vous dire d'où il vient. Vous pourriez imaginer utiliser des cookies ou des informations de session placées uniquement sur certaines pages de votre site Web, mais cela briserait l'expérience utilisateur avec les signets.
la source
Il ne nous reste qu'une seule option après avoir lu tous les faux problèmes de référent: c'est-à-dire que la page que nous souhaitons suivre en tant que référent doit être conservée en session, et comme ajax est appelée, vérifiez en session si elle a une valeur de page de référent et faites l'action autrement non action.
Alors que, d'autre part, il demande une page différente, puis rendez la valeur de session du référent à null.
N'oubliez pas que la variable de session est définie uniquement sur la demande de page souhaitée.
la source