还有个比较好的办法:
在响应头里加一个X-Frame-Options
取值有三种,大部分浏览器都支持:
DENY:浏览器拒绝当前页面加载任何Frame页面
SAMEORIGIN:frame页面的地址只能为同源域名下的页面
ALLOW-FROM origin:origin为允许frame加载的页面地址
这样被不同源的页面以iframe包含时就不会显示了
写脚本
if (window != window.top) { window.top.location.replace(window.location) // 这是直接代替外窗,你也可以干别的 }
if (window != window.top) { window.top.location.replace(window.location) //加弹窗代码 干死他们 还赚钱 }
新浪微博是这么做的
if (top != self) { top.location = self.location; }
基本可以抵挡大多数iframe嵌套了。
还有看一下人家是怎么利用iframe嵌套实施攻击的,就知道怎么防御了
目前最好的js的防御方案为:
if (self == top) { var theBody = document.getElementsByTagName('body')[0]; theBody.style.display = "block"; } else { top.location = self.location; }
添加过滤脚本。原理是当检测到当前的url链接不是自己的时候,让src指向空白地址。具体代码请google。
以上就是 如何避免网页被人嵌套在 iframe 里?的详细内容,更多请关注php中文网其它相关文章!
……