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放...