1. 程式人生 > >flask csrf保護的使用技巧

flask csrf保護的使用技巧

CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。 ——百度百科

網上關於csrf攻擊的一個最典型的例子是銀行通過url+引數轉錢的問題,很好理解。

flask 作為一個強帶的web微框架,自然也是支援防範csrf攻擊的。

通過Flask-WTF來保護表單免受CSRF攻擊

何為Flask-WTF

簡單說來,使用它可以方便我們構建表單和驗證表單,具體用法這裡不做贅述

怎麼開啟保護?

極少的配置,一個應用令牌:

app.config['SECRET_KEY'] = 'you can't know'
或csrf專用令牌
app.config['WTF_CSRF_SECRET_KEY'] = 'IT 666 to 709 kill pic'

Flask-WTF預設是開啟CSRF保護的,你需要的做的是在你的模板中表單一欄加入:

{{ form.csrf_token }}
或者
{{ form.hidden_tag() }}

這樣,csrf保護已經開啟。如若你沒有上面的程式碼,提交表單會無法通過form.validate_on_submit(),錯誤為{'csrf_token': ['The CSRF token is missing.']}

,但這並不會導致http錯誤,僅是無法通過驗證。

關閉保護

自然,我們很可能有的表單不需要保護,那麼,以下三種:

  1. 全域性禁用:app.config中設定WTF_CSRF_ENABLED = False
  2. 單個表單禁用:生成表單時加入引數form = Form(csrf_enabled=False)
  3. 不使用Flask-WTF…啊啊,這個很好理解

flask 內建的保護機制

有些時候,我根本就用不到Flask-WTF,那麼我可以使用flask自身提供的保護機制。

開啟保護

要開啟csrf攻擊保護,需要一下幾個步驟。

from flask_wtf.csrf import
CSRFProtect app.config['SECRET_KEY'] = 'you never guess' CSRFProtect(app)

主要為:匯入方法,設定金鑰,進行保護。
這時候對於一個普通的form,如果你沒有

<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />

flask會丟擲http錯誤。

臨時關閉保護

那麼,如何臨時關閉csrf保護呢。
上面的程式碼做修改:

去掉 CSRFProtect(app)
改為 csrf = CSRFProtect()

if __name__ == '__main__':中加入
csrf.init_app(app)

在不需要保護的路由上當加上:
@csrf.exempt

如此,臨時關閉了csrf。

相關推薦

flask csrf保護的使用技巧

CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。 ——百度百科 網上關於csrf攻擊的一

flaskCSRF保護機制

如果是傳送from表單, 則使用原來的隱藏表單的形式(生成&派發令牌) <form method="post" action="/"> <input type="hidden" name="csrf_token" value="

Flask實現CSRF保護

  參考官方文件  CSRF跨站請求偽造,源於WEB的隱式身份驗證機制,WEB的身份驗證機制雖然可以抱著一個請求時來自於某個使用者的瀏覽器,但卻無法保證該請求是使用者批准傳送的。  例如,使用者登入受信任的網址A,在本地生成了Cookie,在Cookie沒有失效的情況下去

laravel csrf保護

CI 如何 post請求 lar 需要 acad 我們 模擬 白名單 有時候我們的項目需要和外部的項目進行接口對接,如果是post的方式請求;laravel要求csrf保護 但是別人是ci框架或者沒有csrf_token的;該如何處理呢? 可以把我們不需要csrf的url加

Django 的 CSRF 保護機制

ken 渲染 _for ID 一個 RF oss RM ext 用 django 有多久,我跟 csrf 這個概念打交道就有久了。 每次初始化一個項目時都能看到 django.middleware.csrf.CsrfViewMiddleware 這個中間件 每次在模板裏寫

Laravel 5.3+ 如何定義API路徑(取消CSRF保護

從Laravel 5.3+開始,API路徑被放入了routes/api.php中。我們絕大多數的路徑其實都會在web.php中定義,因為在web.php中定義的路徑預設有CSRF保護,而API路徑預設沒有CSRF保護。在Laravel官網文件中寫到: Any HTML forms poi

laravel CSRF 保護

asc push -c form 邏輯 ros rap 存儲 請求方式 在開始之前讓我們來實現上述表單訪問偽造的完整示例,為簡單起見,我們在路由閉包中實現所有業務代碼: Route::get(‘task/{id}/delete‘, function ($id) {

rails中的csrf保護

def verify_authenticity_token unless verified_request? logger.warn "WARNING: Can't verify CSRF token authenticity" if logger handle_unverified_re

CSRF保護和驗證

什麼是CSRF? CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack“或者Session Riding,通常縮寫為CSRF或XSRF,是一種對網站的惡意攻擊。是一種依賴web瀏覽器的、被混淆過

Flask 項目中解決 CSRF 攻擊

存在 hub 個人 自然 是什麽 直接 ... bubuko image #轉載請留言聯系 1. CSRF是什麽? CSRF全拼為Cross Site Request Forgery,譯為跨站請求偽造。 CSRF指攻擊者盜用了你的身份,以你的名義發送惡意請求。包括:以你名

三十三、python學習之Flask框架(五)模板:WTF表單、CSRF跨站請求偽造、模板特有函式&變數

一、WTF表單: 1.web表單: Web 表單是 Web 應用程式的基本功能。預設開啟CSRF保護功能 它是HTML頁面中負責資料採集的部件。表單有三個部分組成:表單標籤、表單域、表單按鈕。表單允許使用者輸入資料,負責HTML頁面資料採集,通過表單將使用者輸入的資料提交給伺服器

三十二、python學習之Flask框架(四)模板:jinja2模板、過濾器、模板複用(繼承、巨集、包含)、瞭解CSRF跨站請求攻擊

一、jinja2模板引擎的簡介: 1.模板: 1.1檢視函式的兩個作用: 處理業務邏輯; 返回響應內容; 1.3 什麼是模板: 模板其實是一個包含響應文字的檔案,不是特指的html檔案,其中用佔位符(變數)表示動態部分,告訴模板引擎其具體的

spring實戰-Spring-security自定義登入登出、防csrf攻擊及檢視保護

第十篇:Spring-security自定義登入登出、防csrf攻擊及檢視保護 這是Spring及SpringMVC的最後一篇,本次主要演示SpringSecurity更使用的示例,如自定義的登入頁面,系統登出,防止CSRF跨站攻擊,以及檢視保護檢視保護可以定義到按鈕級別的許可權 先看自

CSRF的攻擊和保護

CSRF全拼為: Cross Site Request Forgery 跨站請求偽造 CSRF指攻擊者盜用了你的身份,以你的名義發出惡意請求。 CSRF攻擊示意圖: 1. 使用者瀏覽並登陸了正常網站A。 2.通過使用者登入驗證,同時在使用者處產生了A的Cookie。 3.使用

Flask專案實現防止CSRF攻擊的流程

Flask專案實現防止CSRF攻擊的流程 a) 使用 flask_wtf 中 CSRFProtect類,初始化該類並傳入app b) 使用 flask_wtf.csrf模組中的generate_csrf方法生成csrf_token c) 使用請求勾子 after_req

前後端分離,解決跨域問題及django的csrf跨站請求保護 ajax 跨域 headers JavaScript ajax 跨域請求 +設定headers 實踐

1. 前後端分離解決跨域問題 解決跨域呼叫服務並設定headers 主要的解決方法需要通過伺服器端設定響應頭、正確響應options請求,正確設定 JavaScript端需要設定的headers資訊 方能實現; 關於跨域,前端會先發送OPTIONS請求,進行預檢,檢查後端是否允許前端設定的相應的請求頭,請

flaskcsrf防護

一.黑客的csrf攻擊方式:    黑客構造網站後臺某個功能介面的請求地址,誘導使用者去點選或者用特殊方法讓該請求地址自動載入。 如果近期使用者登入過被攻擊網站(假設未開啟防護),cookie還沒過期.    那麼這個黑客的請求將會合法通過.-----

想要保護自主品牌智慧財產權需要了解商標註冊的一些技巧

很多公司應該都會碰到過這種情況“我們的產品服務在市場上頗受歡迎,市場前景很好,接下來要進行品牌化運營,趕緊註冊商標;————這個商標名字已經被註冊了?” 商標註冊第一步是確定商標名字,然後要進行查詢(查詢該商標能否進行註冊,以及通過率是多少)。往往商標起名這一步就難到不少客戶,因為想的稍微好點的名稱都被註冊

flask web開發(四) web表單 csrf,重定向

# -*- coding: cp936 -*- import os import sys import logging.config import flask import socket from flask import Flask,jsonify from flask i

【10.15總結】繞過CSRF的Referer保護

今天下午可能要出遠門,所以現在就把總結寫好了。 這個CSRF漏洞存在於IBM的修改郵箱頁面,修改郵箱的地址是 https://www.ibm.com/ibmweb/myibm/account/sendmail?locale=us-en&email=NEW_EMAIL 所以理論上講,只要修改上面