我有一个页面使用jQuery加载到另一个页面中。我想知道的是,是否有可能以某种方式阻止直接访问在另一个页面中加载的页面。
答案 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。)
在上面讨论的讨论中有更聪明的想法。