Django之clickjacking攻击

clickjacking攻击又称作点击劫持攻击。是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下,并诱使用户点击的手段。
## clickjacking攻击场景:
    1.场景一:如用户收到一封包含一段视频的电子邮件,但其中的“播放”按钮并不会真正播放视频,而是链入一购物网站。
              这样当用户试图“播放视频”时,实际是被诱骗而进入了一个购物网站。
    2.场景二:用户进入到一个网页中,里面包含了一个非常有诱惑力的按钮A,但是这个按钮上面浮了一个透明的iframe标签,
              这个iframe标签加载了另外一个网页,并且他将这个网页的某个按钮和原网页中的按钮A重合,所以你在点击按钮A的时候,
              实际上点的是通过iframe加载的另外一个网页的按钮。比如我现在有一个百度贴吧,想要让更多的用户来关注,那么我们可以准备以下一个页面:          
                    <!DOCTYPE html>
                    <html>
                    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
                    <head>
                    <title>点击劫持</title>
                    <style>
                        iframe{
                            opacity:0.01;
                            position:absolute;
                            z-index:2;
                            width: 100%;
                            height: 100%;
                        }
                        button{
                            position:absolute;
                            top: 345px;
                            left: 630px;
                            z-index: 1;
                            width: 72px;
                            height: 26px;
                        }
                    </style>
                    </head>
                    <body>
                        这个合影里面怎么会有你?
                        <button>查看详情</button>
                        <iframe src="http://tieba.baidu.com/f?kw=%C3%C0%C5%AE"></iframe>
                    </body>
                    </html>
    页面看起来比较简陋,但是实际上可能会比这些更精致一些。当这个页面通过某种手段被传播出去后,用户如果点击了“查看详情”,
    实际上点击到的是关注的按钮,这样就可以增加了一个粉丝。
################# clickjacking防御:
    像以上场景1,是没有办法避免的,受伤害的是用户。而像场景2,受伤害的是百度贴吧网站和用户。
    这种场景是可以避免的,只要设置百度贴吧不允许使用iframe被加载到其他网页中,就可以避免这种行为了。
    X-Frame-Options来设置这种操作。X-Frame-Options可以设置以下三个值:
        1)DENY:不让任何网页使用iframe加载我这个页面。
        2)SAMEORIGIN:只允许在相同域名(也就是我自己的网站)下使用iframe加载我这个页面。
        3)ALLOW-FROM origin:允许任何网页通过iframe加载我这个网页。
    在Django中,使用中间件django.middleware.clickjacking.XFrameOptionsMiddleware可以帮我们堵上这个漏洞,
    这个中间件设置了X-Frame-Option为SAMEORIGIN,也就是只有在自己的网站下才可以使用iframe加载这个网页,
    这样就可以避免其他别有心机的网页去通过iframe去加载了。

相关推荐