防御 Click Jacking
frame busting
通常可以写一段 JavaScript
代码,以禁止 iframe
的嵌套。这种方法叫做 frame busting。比如:
|
|
但是这种方法也存在一些缺陷,因为它是用 JavaScript
写的,控制能力并不是特别强,因此有许多方法可以绕过它。比如上面的方法就可以用嵌套多个 iframe 的方法绕过:
|
|
X-Frame-Options
因为 frame busting
存在被绕过的可能,所以我们需要更好的方法。一个比较好的方案是使用一个 HTTP 请求头——X-Frame-Options
,这个请求头可以说是为了解决 Click Jacking 而生的。
当这个值为 DENY 时,浏览器会拒绝当前页面加载任何 frame 页面;
若值为 SAMEORIGIN 时,则可以定义允许 frame 加载的页面地址。