日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

初窥CSRF攻击方式以及Flask-WTF

發布時間:2023/11/28 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初窥CSRF攻击方式以及Flask-WTF 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

含義

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

解釋

這幅圖非常形象的解釋了CSRF原理的具體過程。

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

  1. 登錄受信任網站A,并在本地生成Cookie。
  2. 在不登出A的情況下,訪問危險網站B。

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

  1. 你不能保證你登錄了一個網站后,不再打開一個tab頁面并訪問另外的網站。

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

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

flask 中的CSRF保護

Flask-WTF 表單保護你免受 CSRF 威脅,你不需要有任何擔心。盡管如此,如果你有不包含表單的視圖,那么它們仍需要額外的保護。
例如,由 AJAX 發送的 POST 請求,并沒有通過表單。在 0.9.0 之前版本,你無法獲得 CSRF 令牌。這就是為什么我們編寫了 CSRF 模塊。

實現

要對所有視圖函數啟用 CSRF 保護,你需要啟用 CsrfProtect 模塊:

from flask_wtf.csrf import CsrfProtectCsrfProtect(app)

與任何其它的 Flask 擴展一樣,你可以惰性加載它:

from flask_wtf.csrf import CsrfProtectcsrf = CsrfProtect()def create_app():app = Flask(__name__)csrf.init_app(app)

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

<form method="post" action="/">{{ form.csrf_token }}
</form>

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

<form method="post" action="/"><input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
</form>

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

@csrf.error_handler
def csrf_error(reason):return render_template('csrf_error.html', reason=reason), 400

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

@csrf.exempt
@app.route('/foo', methods=('GET', 'POST'))
def my_handler():# ...return 'ok'

參考

https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
http://docs.jinkan.org/docs/flask-wtf/csrf.html

總結

以上是生活随笔為你收集整理的初窥CSRF攻击方式以及Flask-WTF的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。