如何在没有 wtforms 的情况下将 csrf 添加到烧瓶应用程序?
How to add csrf to flask app without wtforms?
我有一个简单的网络应用程序,
我想添加 csrf 保护。但是我没看懂 Flask-WTF 提供的 csrf wrapper。我已经看过文档了。但是还是没搞明白是怎么回事
我的问题是:
(1) 应用包装后,需要从路由上处理吗?还是烧瓶帮我处理好?
(2)如果不是自己怎么处理? (请举个例子)。
注意:我不想使用 wtf 表单,我想为输入使用自定义标签。
app.py :
from flask import Flask, render_template
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
csrf = CSRFProtect(app)
@app.route('/', methods=['GET'])
def get_home():
"""Get home template"""
return render_template('home.html')
@app.route('/', methods=['POST'])
def post_home():
"""Handle posted data and do stuff"""
return
home.html(表格):
<form action="#" method="post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
<input type="text" placeholder="Name">
<button type="submit">
Submit
</button>
</form>
默认情况下,您无需担心自己对其进行验证 - 您只需照常处理 POST 请求的其他字段即可。如果您在此处查看 CSRFProtect
class 的 init_app
函数中的函数 csrf_protect()
(第 202-225 行,https://github.com/lepture/flask-wtf/blob/master/flask_wtf/csrf.py),您可以查看这些内容这将在给定请求之前停止 protect()
函数 运行。
我有一个简单的网络应用程序, 我想添加 csrf 保护。但是我没看懂 Flask-WTF 提供的 csrf wrapper。我已经看过文档了。但是还是没搞明白是怎么回事
我的问题是:
(1) 应用包装后,需要从路由上处理吗?还是烧瓶帮我处理好?
(2)如果不是自己怎么处理? (请举个例子)。
注意:我不想使用 wtf 表单,我想为输入使用自定义标签。
app.py :
from flask import Flask, render_template
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
csrf = CSRFProtect(app)
@app.route('/', methods=['GET'])
def get_home():
"""Get home template"""
return render_template('home.html')
@app.route('/', methods=['POST'])
def post_home():
"""Handle posted data and do stuff"""
return
home.html(表格):
<form action="#" method="post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
<input type="text" placeholder="Name">
<button type="submit">
Submit
</button>
</form>
默认情况下,您无需担心自己对其进行验证 - 您只需照常处理 POST 请求的其他字段即可。如果您在此处查看 CSRFProtect
class 的 init_app
函数中的函数 csrf_protect()
(第 202-225 行,https://github.com/lepture/flask-wtf/blob/master/flask_wtf/csrf.py),您可以查看这些内容这将在给定请求之前停止 protect()
函数 运行。