【发布时间】:2020-05-03 03:42:58
【问题描述】:
关于这个问题的上一个问题是here。 CSRF 令牌在 Flask-WTF 表单上继续失败。配置和设置的详细信息在链接中。
我现在发现在我的模板上,我在视图中传递了两个表单,每个表单上的 csrf_token 不是唯一的。我不太明白为什么? CSRF 令牌应该是唯一的 per 形式对吗?
我在 Chrome 中检查了令牌,它们是相同的 - 都包含在底部代码块中。
<form method="post" class="mt-4" id="form_1">
{{ form1.csrf_token }}
<div class="form-group"
{{ form1.form_field1(class_='form-control', id='foo', type='text',
placeholder='Enter your data') }}
</div>
<div class="form-group">
{{ form1.form_field2(class_='form-control', id='bar',
type='text', placeholder='More data please') }}
</div>
{{ form1.submit(class_='btn btn-lg btn-info btn-block', form='form_1' ) }}
<!-- <button form="form_1" type="submit"-->
<!-- class="btn btn-lg btn-info btn-block">-->
<!-- <i class="fa fa-lock fa-lg"></i> -->
<!-- </button>-->
</form>
<form class="mt-3" method="post" id="form_2">
<div class="form-group input-group">
{{ form2.csrf_token }}
{% if current_user.has_value() %}
{{form2.field(type='checkbox', checked=1)}}
{% else %}
{{ form2.field(type='checkbox') }}
{% endif %}
{{ form2.update(type='submit', class_='btn btn-light input-group-append') }}
</div>
</form>
<form method="post" class="mt-4" id="form_1">
<input id="csrf_token" name="csrf_token" type="hidden" value="ImM5OWI2NTJiY2RhOGJkNjlkYjFkYzliM2JkMDM4N2JmODQwMDU1YWQi.XiAz0A.7r1lBMq-tO0wrukerCfIFgXwK9M">
.....
<form class="mt-3" method="post" id="form_2">
<div class="form-group input-group">
<input id="csrf_token" name="csrf_token" type="hidden" value="ImM5OWI2NTJiY2RhOGJkNjlkYjFkYzliM2JkMDM4N2JmODQwMDU1YWQi.XiAz0A.7r1lBMq-tO0wrukerCfIFgXwK9M">
【问题讨论】:
标签: flask jinja2 csrf flask-wtforms