确定发送或调用(通过AJAX)当前页面的页面最可靠、最安全的方法是什么?我不想使用$_SERVER['HTTP_REFERER']
,因为它(缺乏)可靠性,而且我需要被调用的页面只来自我网站上的请求。
编辑:我正在寻找验证脚本,执行一系列的行动是从我的网站上的一个页面调用。
发布于 2008-10-03 07:33:54
REFERER是由客户端浏览器作为HTTP协议的一部分发送的,因此实际上是不可靠的。它可能不在那里,可能是伪造的,如果是出于安全原因,你就不能相信它。
如果您想验证请求是否来自您的站点,那么您不能,但是您可以验证用户是否访问过您的站点和/或已通过身份验证。Cookie是在AJAX请求中发送的,因此您可以依赖它。
发布于 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
我确实知道一些安全的网站会对他们所有的安全页面做同样的事情。
发布于 2008-10-03 07:36:26
没有可靠的方法来检查这一点。它真的在客户的手中告诉你它是从哪里来的。你可以想象只将cookie或会话信息放在网站的某些页面上,但这样做会破坏用户使用书签的体验。
https://stackoverflow.com/questions/165975
复制相似问题