这是本文的续篇。
Flask-WTF:验证使用CSRF对策创建Form的Form和Flask扩展输入项
安装
1 | $ pip install flask-wtf flask-bootstrap |
关于Flask-WTF补充
您可以轻松创建一个不错的表单(表单html生成
简易CSRF措施
什么是CSRF:
请求伪造(CSRF:跨站点请求伪造)是Web应用程序的重要过程,例如互联网购物的最终付款和提款,其触发是通过踩踏另一个站点上准备的内容上的陷阱链接来触发的。用户致电。
每次攻击访问合法Web内容以维护会话时,此攻击都会利用浏览器向Web服务器发送某些cookie,基本身份验证数据或摘要身份验证数据的属性。
CSRF措施:
阻止Web应用程序接受基于除用户之外的任何人伪造的内容的HTTP请求。
嵌入并提交一个其他人难以估计的随机值,作为表单中的隐藏字段,并使表单返回
易于使用(也使用Flask-Bootstrap)
app.py
1 2 3 4 | from flask import Flask app = Flask(__name__) app.config['SECRET_KEY'] = 'super secret' # CSRF対策でtokenの生成に必要 |
创建表单
app.py
1 2 3 4 5 6 7 | from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import Required Class NameForm(FlaskForm): name = StringField('name:', validators=[Required()]) submit = SubmitField('Submit') |
创建视图
form.html
1 2 | {% import "bootstrap/wtf.html" as wtf %} {{ wtf.quick_form(form) }} |
表单处理示例:
app.py
1 2 3 4 5 6 7 8 | @app.route('/', methods=['GET', 'POST']) def index(): name = None form = NameForm() if form.validate_on_submit(): name = form.name.data form.name.data = '' return render_template('index.html', form=form, name=name) |
-
实现示例(github存储库)
-
关于WTF表格(Flask官方文档)