是否有任何选项可以检测我的页面是否是从点击劫持页面加载的?
我的意思是,如果页面是点击劫持的起源(我已经设置了X-FRAME-OPTIONS标题)并不重要,那就是用户正在浏览浏览页面的点击劫持页面。
我找到的第一个解决方案是控制HTTP-REFERER,但这是一项艰苦的工作,因为我无法控制所有流量。
抱歉我的英文。
答案 0 :(得分:0)
除非您打算让外部网站能够POST到您的网站,否则如果您有来自其他服务器的POST请求,则可能是点击顶部:
if($_SERVER['REQUEST_METHOD'] == 'POST' && !strstr($_SERVER['HTTP_REFERER'], 'mydomain.com') {
//probably clickjacking
}
如果您的页面使用易受点击劫持的GET,您可以在每页的基础上添加对HTTP_REFERER的检查,或者更改页面以使用POST(这通常最适合进行更新的内容) )。
答案 1 :(得分:0)
您可以选择设置网站标题:" X-Frames-Options"到" SAMEORIGIN"
除非原始网页位于您的域中,否则这应该会阻止您的网站加载到iframe和框架中。 请注意,这仅适用于某些浏览器,例如我不认为这适用于IE7及以下版本,我认为它不适用于Chrome。这至少可以减少你的攻击面。
的Apache:
标题始终附加X-Frame-Options SAMEORIGIN
MDN - The X-Frame-Options response header
编辑:现在我明白了...
也许您可以使用与此类似的代码:
if (window.top !== window.self) {
// do something here
}

这是检测页面是否加载到iframe的一种方法。您可以在此处设置cookie,在此处调用WebService,或使用window.location.href进行导航。
以下是"框架破坏"的示例点击顶升的防御: Clickjacking Defense
-KB