CSRF的理解及Flask和Django的解決方案

2022-07-11 20:33:15 字數 928 閱讀 5958

攻擊的原理

1. 使用者正常登入 **a

2. **a 向使用者瀏覽器寫入cookies(包含登入資訊)

3. 使用者在沒有登出的情況下,訪問了**b(攻擊**)

4. **b 偽造了乙個 **a 的請求,誘導使用者去點選

如何解決?

# 在表單和cookie中,同時寫入相同的token值,使用者在提交表單時,驗證cookie和表單中(或者請求體中)的# token是否具有,並且一致才能放行。

首先,定位問題,這是由於咱開發程式不健全導致的;

具體解決方法:

1. 後端首先需要開啟第三方框架的csrf保護,

(1) flask框架,依賴的是 flask-wtf 拓展。具體實現:

from flask_wtf.csrf import csrfprotect

注意:csrfprotect只做驗證工作,它對post,put,delete和 ???請求做校驗,cookie中的 csrf_token 和表單中的 csrf_token 需

要我們自己實現。

(2) django框架,使用跨站偽造請求攻擊中介軟體

中介軟體 django.middleware.csrf.csrfviewmiddleware

在 flask 中, flask-wtf 擴充套件有一套完善的 csrf 防護體系,對於我們開發者來說,使用起來非常簡單

}} }

} }} }

}form>

設定完畢,cookie 中的 csrf_token 不需要我們關心,會自動幫我們設定

from flask.ext.wtf import csrfprotect

}...

form>

csrf原理及flask的處理方法

例如,由 ajax 傳送的 post 請求,然而它背後並沒有表單。在 flask wtf 0.9.0 以前的版本你無法獲得 csrf 令牌。這是為什麼我們要實現 csrf。使用者正常登入a銀行 a 返回cookie資訊給使用者,瀏覽器儲存cookie資訊 在a 沒有退出登入的情況下 或者說cooki...

CSRF理解和實戰

目錄 csrf cross site request forgery 跨站請求偽造,csrf通過偽裝來自受信任使用者的請求來利用受信任的 也就是說,請求是攻擊者偽造了請求,使伺服器以為是使用者發起的。csrf通常由以下流程構成 以下引自 總結來說,攻擊者沒有竊取你的登入資訊,但是利用你的登入資訊,冒...

Django 的 CSRF 保護機制理解

用 django 有多久,我跟 csrf 這個概念打交道就有久了。但是一直我都是知其然而不知其所以然,沒有把 csrf 的機制弄清楚。昨天稍微研究了一下,總結如下。你的 會以為這個請求是使用者自己發來的,其實呢,這個請求是那個惡意 偽造的。具體的細節及其危害見 wikipedia django 第一...