六十五:CSRF攻击与防御之CSRF防御之form表单防御

防御原理,将csrf_token放到session中,再将session放到cookie中

六十五:CSRF攻击与防御之CSRF防御之form表单防御

实现:

六十五:CSRF攻击与防御之CSRF防御之form表单防御

from flask_wtf import CSRFProtect # flask_wtf 已经提供CSRF的防御手段
CSRFProtect(app) # 绑定app

CSRFProtect源码

六十五:CSRF攻击与防御之CSRF防御之form表单防御

六十五:CSRF攻击与防御之CSRF防御之form表单防御

六十五:CSRF攻击与防御之CSRF防御之form表单防御

需在要提交数据的页面加:<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">

若未加则会报错

六十五:CSRF攻击与防御之CSRF防御之form表单防御

六十五:CSRF攻击与防御之CSRF防御之form表单防御

六十五:CSRF攻击与防御之CSRF防御之form表单防御

获取并打印csrf_token看一下

六十五:CSRF攻击与防御之CSRF防御之form表单防御

六十五:CSRF攻击与防御之CSRF防御之form表单防御

同理,转账提交也需要添加

六十五:CSRF攻击与防御之CSRF防御之form表单防御

六十五:CSRF攻击与防御之CSRF防御之form表单防御

六十五:CSRF攻击与防御之CSRF防御之form表单防御

再次访问病毒网站

数据库信息

六十五:CSRF攻击与防御之CSRF防御之form表单防御

访问

六十五:CSRF攻击与防御之CSRF防御之form表单防御

访问失败,金额不变

六十五:CSRF攻击与防御之CSRF防御之form表单防御