初窺CSRF攻擊方式以及Flask WTF

2021-09-29 02:41:38 字數 1361 閱讀 5867

csrf(cross-site request forgery),中文名稱:跨站請求偽造,也被稱為:one click attack/session riding,縮寫為:csrf/xsrf。

從上圖可以看出,要完成一次csrf攻擊,受害者必須依次完成兩個步驟:

登入受信任**a,並在本地生成cookie。

在不登出a的情況下,訪問危險**b。

看到這裡,你也許會說:「如果我不滿足以上兩個條件中的乙個,我就不會受到csrf的攻擊」。是的,確實如此,但你不能保證以下情況不會發生:

你不能保證你登入了乙個**後,不再開啟乙個tab頁面並訪問另外的**。

你不能保證你關閉瀏覽器了後,你本地的cookie立刻過期,你上次的會話已經結束。(事實上,關閉瀏覽器不能結束乙個會話,但大多數人都會錯誤的認為關閉瀏覽器就等於退出登入/結束會話了…)

上圖中所謂的攻擊**,可能是乙個存在其他漏洞的可信任的經常被人訪問的**。

要對所有檢視函式啟用 csrf 保護,你需要啟用 csrfprotect 模組:

from flask_wtf.csrf import csrfprotect
與任何其它的 flask 擴充套件一樣,你可以惰性載入它:

from flask_wtf.csrf import csrfprotect

csrf = csrfprotect(

)def()

:

如果模板中有表單,你不需要做任何事。與之前一樣:

但如果模板中沒有表單,你仍需要 csrf 令牌:

無論何時未通過 csrf 驗證,都會返回 400 響應。你可以自定義這個錯誤響應:

@csrf.error_handler

defcsrf_error

(reason)

:return render_template(

'csrf_error.html'

, reason=reason)

,400

我們強烈建議你對所有檢視啟用 csrf 保護。但也提供了將某些檢視函式除外的途徑:

@csrf.exempt

'/foo'

, methods=

('get'

,'post'))

defmy_handler()

:# ...

return

'ok'

初談CSRF攻擊

我和大家分享一下我在開發時候遇到的一些問題,以及我的解決方案。跨站請求偽造 cross siterequest forger 簡稱csrf,有時候縮寫xsrf表示,攻擊要比簡單的跨站指令碼 xss 攻擊更危險。我主要講解它的危害以及如何防禦,並不會說明如何去實現。1.威脅概述 假設乙個 允許使用者登...

ARP DNS DHCP攻擊方式

arp請求 pc a需要其預設閘道器 r1 的mac位址 因此,它將傳送arp請求以獲取192.168.10.1的mac位址。arp響應 r1用pc a的ip和mac位址更新其arp快取。r1向pc a傳送arp答覆,然後pc a用r1的ip和mac位址更新其arp快取。欺詐性arp答覆 在圖中,威...

Ddos攻擊方式分類

分布式拒絕服務是 利用分布式的客戶端,向服務端傳送大量看似合法的請求,從而消耗大量資源或者長時間占用資源不釋放。攻擊網路頻寬自願的攻擊方式 1 直接攻擊 1.1 icmp igmp 洪水攻擊 1.2 udp洪水攻擊 2 反射和方法攻擊 2.1 ack反射攻擊 2.2 dns放大攻擊 2.3 ntp放...