检测我的页面是否为点击劫持目的地


Detect if my page is a clickjacking destination

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

我的意思是,无论页面是否是点击劫持的起源(我已经设置了X-FRAME-OPTIONS标题),问题是用户是否从点击劫持的页面浏览到我的页面。

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

对不起我的英语。

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

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

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

您的选项之一是将网站标题"X-Frames-options"设置为"SAMEORIGIN"

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

Apache:

标头总是附加X-Frame-Options SAMEORIGIN

MDN-X-Frame-Options响应标头

编辑:现在我更明白了。。。

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

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

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

以下是针对点击劫持的"破坏框架"防御示例:点击劫持防御

-KB