防止点击劫持(Clickjacking)的方法

1.在服务器端设置 X-FRAME-OPTIONS
该方法可以适用于比较新的一些版本比较新的浏览器,例如:

  • IE8 and IE9

  • Opera 10.50+

  • Safari 4+

  • Chrome 4.1.249.1042+

  • Firefox 3.6.9+(Or earlier with NoScript)

如果你使用的是Apache服务器,请参考以下设定方法:

  • 方法1:设置httpd.config文件
    在该文件中添加如下代码

    Header set X-Frame-Options SAMEORIGIN

    如果你想允许你自己的网站或者一些其他的网站在iFrame里引用你的网页内容,可以用如下代码:

    SetEnvIf Referer “kevin-wu.net” iframes_are_cool=1
    Header set X-Frame-Options SAMEORIGIN env=!iframes_are_cool

    将kevin-wu.net换成你的网址即可。

  • 方法2:设置.htaccess文件
    在该文件中添加如下代码:

    Header set X-Frame-Options SAMEORIGIN

    如果你想允许你自己的网站或者一些其他的网站在iFrame里引用你的网页内容,可以用如下代码:

    SetEnvIf Referer “kevin-wu.net” iframes_are_cool=1
    Header set X-Frame-Options SAMEORIGIN env=!iframes_are_cool

    将kevin-wu.net换成你的网址即可。

如果你使用的是IIS浏览器,请参照以下设定方法:
打开因特网服务管理器(InternetServiceManager),点击HTTP Headers标签,在自定义Header中点击添加按钮。在弹出筐的Header名中输入”X-Frame-Options”,在值中输入”DENY” 或者”SAMEORIGIN”. 点击确定。
注:
设置”DENY”参数,浏览器会拒绝一切包含iFrame/Frame对网页的访问。(包括你自己的网站也不能使用iFrame/Frame)
设置”SAMEORIGIN”参数,则浏览器会拒绝 访问源 与 iFrame/Frame中包含的网页源 不同时的请求。

2.在网页上添加防止加载iFrame的Javascript代码
此方法适用于不支持X-FRAME-OPTIONS的版本较老的浏览器。

<script>
try { top.document.domain } catch (e) {
var f = function() { document.body.innerHTML
= ; }
setInterval(f, 1);
if (document.body) document.body.onload = f;
}
script>