首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中确定Referer

在PHP中确定Referer
EN

Stack Overflow用户
提问于 2008-10-03 07:17:42
回答 4查看 154.5K关注 0票数 104

确定发送或调用(通过AJAX)当前页面的页面最可靠、最安全的方法是什么?我不想使用$_SERVER['HTTP_REFERER'],因为它(缺乏)可靠性,而且我需要被调用的页面只来自我网站上的请求。

编辑:我正在寻找验证脚本,执行一系列的行动是从我的网站上的一个页面调用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-03 07:33:54

REFERER是由客户端浏览器作为HTTP协议的一部分发送的,因此实际上是不可靠的。它可能不在那里,可能是伪造的,如果是出于安全原因,你就不能相信它。

如果您想验证请求是否来自您的站点,那么您不能,但是您可以验证用户是否访问过您的站点和/或已通过身份验证。Cookie是在AJAX请求中发送的,因此您可以依赖它。

票数 93
EN

Stack Overflow用户

发布于 2012-12-04 21:19:29

我发现最好的是一个CSRF令牌,并将其保存在会话中,以便您需要验证引用的链接。

因此,如果你正在生成一个FB回调,那么它应该是这样的:

$token = uniqid(mt_rand(), TRUE);
$_SESSION['token'] = $token;
$url = "http://example.com/index.php?token={$token}";

然后,index.php将如下所示:

if(empty($_GET['token']) || $_GET['token'] !== $_SESSION['token'])
{
    show_404();
} 

//Continue with the rest of code

我确实知道一些安全的网站会对他们所有的安全页面做同样的事情。

票数 23
EN

Stack Overflow用户

发布于 2008-10-03 07:36:26

没有可靠的方法来检查这一点。它真的在客户的手中告诉你它是从哪里来的。你可以想象只将cookie或会话信息放在网站的某些页面上,但这样做会破坏用户使用书签的体验。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/165975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档