在 PHP 中确定引用
2022-08-30 07:34:41
确定当前页面发送或调用(通过 AJAX)的页面的最可靠和最安全的方法是什么。由于(缺乏)可靠性,我不想使用,并且我需要调用的页面仅来自来自我的站点的请求。
编辑:我希望验证是否从我网站上的某个页面调用了一系列操作的脚本。$_SERVER['HTTP_REFERER']
确定当前页面发送或调用(通过 AJAX)的页面的最可靠和最安全的方法是什么。由于(缺乏)可靠性,我不想使用,并且我需要调用的页面仅来自来自我的站点的请求。
编辑:我希望验证是否从我网站上的某个页面调用了一系列操作的脚本。$_SERVER['HTTP_REFERER']
REFERER由客户端的浏览器作为HTTP协议的一部分发送,因此确实不可靠。它可能不在那里,它可能是伪造的,如果出于安全原因,你就不能信任它。
如果您想验证请求是否来自您的网站,那么您无法验证,但您可以验证用户是否已访问您的网站和/或已通过身份验证。Cookie 在 AJAX 请求中发送,因此您可以依赖它。
我发现最好的是CSRF令牌,并将其保存在会话中,以获取需要验证引荐来源网址的链接。
因此,如果您正在生成FB回调,那么它将如下所示:
$token = uniqid(mt_rand(), TRUE);
$_SESSION['token'] = $token;
$url = "http://example.com/index.php?token={$token}";
然后索引.php将如下所示:
if(empty($_GET['token']) || $_GET['token'] !== $_SESSION['token'])
{
show_404();
}
//Continue with the rest of code
我确实知道一些安全网站为所有安全页面做了等效的事情。