日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Flask的csrf_token的用法

發(fā)布時(shí)間:2023/12/20 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flask的csrf_token的用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在flask當(dāng)中,flask-wtf模塊時(shí)攜帶csrf校驗(yàn)的,只是需要開啟;
如果不開啟校驗(yàn)就不需要校驗(yàn),但是那樣不安全。
Csrf是針對(duì)與post請(qǐng)求的跨域限制,get請(qǐng)求沒有作用
csrf_token的開啟

?

在flask中開啟csrf保護(hù)

from flask_wtf.csrf import CsrfProtect CsrfProtect(app)

csrf也支持惰性加載

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

注意: csrf保護(hù)需要app設(shè)置鹽 app.config["SECRET_KEY"]

使用表單提交請(qǐng)求添加驗(yàn)證方法:

在表單中添加csrf驗(yàn)證

方式一: <form method="post" action="">{{ form.csrf_token }} </form> 方式二:(推薦) <form method="post" action="/"><input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> </form>

csrf不通過會(huì)返回400響應(yīng)

你可以自定義返回的頁面

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

如果你想要某些路由不進(jìn)行csrf驗(yàn)證,使用csrf.exempt放棄驗(yàn)證

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

使用ajax提交請(qǐng)求

方法一:

# 首先在html文件里面的head標(biāo)簽里面添加meta標(biāo)簽 <meta name="csrf-token" content="{{ csrf_token() }}"> # 然后在script里面使用jquery獲取 <script type="text/javascript"> var csrftoken = $('meta[name=csrf-token]').attr('content') $.ajaxSetup({beforeSend: function(xhr, settings) {if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {xhr.setRequestHeader("X-CSRFToken", csrftoken)}} }) </script>

方法二:

<script type="text/javascript"> var csrftoken = "{{ csrf_token() }}"$.ajaxSetup({beforeSend: function(xhr, settings) {if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {xhr.setRequestHeader("X-CSRFToken", csrftoken)}} }) </script>

?


1、首先在配置文件中開啟CSRFProtect



?

?

2、視圖中實(shí)例化forms類



?

?

3、前端使用csrf_token



?

?

4、非flask自創(chuàng)的form表單即前端的form表單使用csrf_token的方式



切記要在后面加括號(hào)

?

?

5、ajax的post請(qǐng)求中使用csrf_token



?

?

6、@csrf.exempt單個(gè)視圖免除csrf_token校驗(yàn)


?

?

總結(jié)

以上是生活随笔為你收集整理的Flask的csrf_token的用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。