最淺顯易懂的Django系列教程(43)-點擊劫持攻擊

clickjacking攻擊:

clickjacking攻擊又稱作點擊劫持攻擊。是一種在網(wǎng)頁中將惡意代碼等隱藏在看似無害的內(nèi)容(如按鈕)之下,并誘使用戶點擊的手段。

clickjacking攻擊場景:

場景一:

如用戶收到一封包含一段視頻的電子郵件,但其中的“播放”按鈕并不會真正播放視頻,而是鏈入一購物網(wǎng)站。這樣當(dāng)用戶試圖“播放視頻”時,實際是被誘騙而進入了一個購物網(wǎng)站。

場景二:

用戶進入到一個網(wǎng)頁中,里面包含了一個非常有誘惑力的按鈕A,但是這個按鈕上面浮了一個透明的iframe標(biāo)簽,這個iframe標(biāo)簽加載了另外一個網(wǎng)頁,并且他將這個網(wǎng)頁的某個按鈕和原網(wǎng)頁中的按鈕A重合,所以你在點擊按鈕A的時候,實際上點的是通過iframe加載的另外一個網(wǎng)頁的按鈕。比如我現(xiàn)在有一個百度貼吧,想要讓更多的用戶來關(guān)注,那么我們可以準(zhǔn)備以下一個頁面:

<!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>
頁面看起來比較簡陋,但是實際上可能會比這些更精致一些。當(dāng)這個頁面通過某種手段被傳播出去后,用戶如果點擊了“查看詳情”,實際上點擊到的是關(guān)注的按鈕,這樣就可以增加了一個粉絲。

clickjacking防御:

像以上場景1,是沒有辦法避免的,受傷害的是用戶。而像場景2,受傷害的是百度貼吧網(wǎng)站和用戶。這種場景是可以避免的,只要設(shè)置百度貼吧不允許使用iframe被加載到其他網(wǎng)頁中,就可以避免這種行為了。我們可以通過在響應(yīng)頭中設(shè)置X-Frame-Options來設(shè)置這種操作。X-Frame-Options可以設(shè)置以下三個值:

  1. DENY:不讓任何網(wǎng)頁使用iframe加載我這個頁面。
  2. SAMEORIGIN:只允許在相同域名(也就是我自己的網(wǎng)站)下使用iframe加載我這個頁面。
  3. ALLOW-FROM origin:允許任何網(wǎng)頁通過iframe加載我這個網(wǎng)頁。

Django中,使用中間件django.middleware.clickjacking.XFrameOptionsMiddleware可以幫我們堵上這個漏洞,這個中間件設(shè)置了X-Frame-OptionSAMEORIGIN,也就是只有在自己的網(wǎng)站下才可以使用iframe加載這個網(wǎng)頁,這樣就可以避免其他別有心機的網(wǎng)頁去通過iframe去加載了。

看文章不過癮?還有免費的視頻教程,讓你學(xué)起來更輕松:https://www.zhiliaoketang.cn/course/detail/4.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容