0

是否有任何选项可以检测我的页面是否是从点击劫持页面加载的?

我的意思是,如果页面是点击劫持的来源(我已经设置了 X-FRAME-OPTIONS 标题)并不重要,问题是用户是否从点击劫持页面浏览到我的页面。

我找到的第一个解决方案是控制 HTTP-REFERER,但这是一项艰苦的工作,因为我无法控制所有流量。

对不起我的英语不好。

4

2 回答 2

0

除非您打算让外部站点能够 POST 到您的站点,否则如果您有来自另一台服务器的 POST 请求,则可能是点击劫持:

if($_SERVER['REQUEST_METHOD'] == 'POST' && !strstr($_SERVER['HTTP_REFERER'], 'mydomain.com') {
      //probably clickjacking
}

如果您有使用 GET 的页面容易受到点击劫持,您可以在每页的基础上添加对 HTTP_REFERER 的检查,或者将页面更改为使用 POST(这通常最适合进行更新的内容)。

于 2015-10-28T09:57:10.183 回答
0

您的选择之一是将您的网站标题:“X-Frames-Options”设置为“SAMEORIGIN”

除非原始页面在您的域中,否则这应该可以防止您的网站被加载到 iframe 和框架中。请注意,这仅适用于某些浏览器,例如,我认为这不适用于 IE7 及以下版本,我认为它不适用于 chrome。这至少会稍微减少你的攻击面。

阿帕奇:

标头始终附加 X-Frame-Options SAMEORIGIN

MDN - X-Frame-Options 响应标头

编辑:现在我理解得更好了......

也许你可以使用类似这样的代码:

if (window.top !== window.self) {
        // do something here
    }

这是检测页面是否加载到 iframe 中的一种方法。您可以在此处设置 cookie,在此处调用 WebService,或使用 window.location.href 进行导航。

这是点击劫持的“框架破坏”防御示例: Clickjacking Defense

-KB

于 2015-10-28T18:58:11.207 回答