【发布时间】:2015-10-31 12:33:39
【问题描述】:
Flask-WTForms 提供 CSRF 保护。它在使用普通 HTML 表单时效果很好,但在使用 AJAX 时过程不太清楚。我的表单中有一个文件上传,我使用 AJAX 将过程分成两部分:文件发送到 upload 端点,而表单的其余部分发送到 submit 端点。由于该文件是使用 AJAX 发布的,因此它没有获得 CSRF 令牌,但我想保护 upload 端点免受攻击。使用 AJAX 时如何生成 CSRF 令牌?
@app.route('/submit', methods=["GET","POST"])
@login_required
def submit():
form = MyForm()
if request.method == "POST" and form.validate():
# success, csrf checks out and data is validated
# do stuff
csrf_for_uploads = # generate csrf?
return render_template('some_form.html', form=form, csrf_for_uploads=csrf_for_uploads)
@app.route('/upload', methods=["POST"])
@login_required
def upload():
myfile = request.files['file']
# How do I verify CSRF now?
【问题讨论】:
标签: python flask flask-wtforms csrf-protection