是否有任何选项可以检测我的页面是否是从点击劫持页面加载的?
我的意思是,无论页面是否是点击劫持的起源(我已经设置了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