跨站攻擊和利用CSRF token來防禦

2021-08-20 18:33:07 字數 1056 閱讀 2326

跨站攻擊:

使用者首先訪問網銀站點,登入成功後,瀏覽器拿到token

使用者並沒有登出網銀站點,此時又登入乙個釣魚站點

釣魚站點有乙個**鏈結,使用者點了此鏈結,此鏈結的內容是乙個url,而此url的實質就是轉賬給釣魚者,用的是網銀的標準轉賬url.

使用者點此鏈結後,瀏覽器封裝http請求,當看見是訪問那個尚未退出的網銀站點,就自動加上了cookie與auth token

於是,authentication通過,就會真的轉賬了

同源策略:

a網頁設定的cookie,b網頁不能開啟,除非ab同源。同源指的是:協議相同,網域名稱相同,埠相同。

csrf token防止跨站攻擊:

在cookie中放置csrftoken,乙個隨機串

網銀**的網頁原始碼中會將該串同時也放置到提交表單的隱藏域

網銀**後端會比較cookie中的csrftoken和表單中的隱藏域,若一致,則通過驗證

對於釣魚**來說,因為同源策略,它無法獲取到網銀**的cookie,只能是利用瀏覽器封裝http請求的時候把網銀**的cookie一起封進去;

但是因為它無法讀取cookie,所以無法偽造乙個表單,在其中的隱藏域中填寫和cookie中csrftoken一樣的值。因此,它無法通過驗證。

以django為例,說明如何使用csrf token防止跨站攻擊:

在django的配置檔案中,如settings.py,找到 middleware_classes 這一項,使能其中的 django.middleware.csrf.csrfviewmiddleware

使能以上這一項後,就相當於使用了 csrfviewmiddleware 這個類,尤其是其中的 process_view()函式。這個類一般在csrf.py中。

process_view()函式會比較http request中的cookie裡的csrf token 和 頭部的 x-csrftoken 是否相同。若不相同,則相當於檢測失敗,有跨站攻擊的危險。

因此,這也要求前端在提交http request的時候,需要在其中新增header欄位 x-csrftoken,其值需從cookie中取得以保證一致。

PHP和XSS跨站攻擊

其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。如果你不懂什麼是xss,可以看這裡,或者這裡 中文的也許會好懂一些 國內不少論壇都存在跨站指令碼漏洞,例如這裡 有乙個goo...

PHP和XSS跨站攻擊

其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的 乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。如果你不懂什麼是xss,可以看 這裡,或者 這裡 中文的也許會好懂一些 國內不少論壇都存在跨站指令碼漏洞,例如 這裡 有乙...

PHP和XSS跨站攻擊

其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的 乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。如果你不懂什麼是xss,可以看 這裡,或者 這裡 中文的也許會好懂一些 國內不少論壇都存在跨站指令碼漏洞,例如 這裡 有乙...