使用 WTForms-Alchemy 进行 CSRF 保护
Using CSRF protection with WTForms-Alchemy
我有一个包含 3 个表单的 Web 应用程序。 2 继承自 flask_wtf.form.Form,后者本身继承自 WTForms SecureForm。这意味着这些表单具有自动 CSRF 保护。
第三种形式从模型对象继承其属性,因此继承自 wtforms_alchemy.ModelForm,后者本身继承自 wtforms.Form。
如何为最后一个表单添加 CSRF 保护?
对我有用的是从 flask_wtf 包中混合 Form。
from flask_wtf import Form
class YourForm(ModelForm, Form):
结果中还有一个有效的隐藏 CSRF 令牌。
对我有用的是在 flask_wtf 包的配置 flask_wtf.csrf 中混合。
py
from flask_wtf.csrf import CSRFProtect
....
csrf = CSRFProtect(app)
class UserForm(ModelForm):
class Meta:
model = User
....
userform = UserForm()
html
<form method="post">
{{ userform.csrf_token }}
{{ userform.userform }}
<input type="submit" name="submit">
</form>
结果中还有一个有效的隐藏 CSRF 令牌。
我有一个包含 3 个表单的 Web 应用程序。 2 继承自 flask_wtf.form.Form,后者本身继承自 WTForms SecureForm。这意味着这些表单具有自动 CSRF 保护。
第三种形式从模型对象继承其属性,因此继承自 wtforms_alchemy.ModelForm,后者本身继承自 wtforms.Form。
如何为最后一个表单添加 CSRF 保护?
对我有用的是从 flask_wtf 包中混合 Form。
from flask_wtf import Form
class YourForm(ModelForm, Form):
结果中还有一个有效的隐藏 CSRF 令牌。
对我有用的是在 flask_wtf 包的配置 flask_wtf.csrf 中混合。
py
from flask_wtf.csrf import CSRFProtect
....
csrf = CSRFProtect(app)
class UserForm(ModelForm):
class Meta:
model = User
....
userform = UserForm()
html
<form method="post">
{{ userform.csrf_token }}
{{ userform.userform }}
<input type="submit" name="submit">
</form>
结果中还有一个有效的隐藏 CSRF 令牌。