防止.php文件被加载到jQuery请求页面之外

时间:2009-10-11 00:04:34

标签: jquery accessibility blocking

我有一个页面使用jQuery加载到另一个页面中。我想知道的是,是否有可能以某种方式阻止直接访问在另一个页面中加载的页面。

3 个答案:

答案 0 :(得分:2)

您可以尝试为您的get / post或cookie添加一些魔术值。然后在页面开头检查该值,如果缺少则返回一些错误页面。

然而,这不会阻止某些用户完全这样做。如果他们调试您的请求,例如使用Firebug,那么他们可以使用该幻数复制请求。

答案 1 :(得分:0)

你不能100%阻止它 - 来自jQuery的请求是正常的浏览器请求,所以你能做的最多就是阻止外部链接和偶然访问(麻烦完全复制HTTP请求的人仍然会能够点击页面;没有办法解决这个问题。)

您可以通过检查HTTP“referer”标题并确保引用页面是您自己来停止外部链接。

您还可以通过检查标题“X-Requested-With”来检查特定请求是否来自jQuery与浏览器--jQuery添加此标头并使用值“XMLHttpRequest”填充它;常规浏览器请求不会有该标题。

你也可以设置一个带有cookie的验证系统,到期必须是请求的一部分的令牌等等。但这是更多的工作和(我认为)矫枉过正 - 如果有人决定直接访问该页面,可以绕过HTTP标头过滤,他们也可以找出你的标记。

答案 2 :(得分:0)

从类似的Eran Galperin

中引用discussion
  

正如其他人所说,Ajax请求可以   被模仿是创造正确的   头。如果你想要一个基本的   检查请求是否是Ajax   请求您可以使用:

if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
 //Request identified as ajax request
}
     

然而,你永远不应该以你的为基础   这张支票的安全性。它会   消除对页面的直接访问   如果这就是你所需要的。

请在Jeremy Ruten之后考虑这个答案:

  

无法保证这一点   他们通过AJAX访问它。   直接访问和AJAX访问   来自客户,所以它很容易   被伪造。

     

为什么你要这样做呢?

     

如果是因为PHP代码不是   非常安全,使PHP代码更多   安全。 (例如,如果你的AJAX   将用户标识传递给PHP文件,   在PHP文件中编写代码来制作   确保这是正确的用户ID。)

在上面讨论的讨论中有更聪明的想法。