csrf验证机制
CSRF(跨站请求伪造)
CSRF 英文全称为 Cross SIte Request Forgery
CSRF 通常指恶意攻击者盗用用户的名义,发送恶意请求,严重泄露个人信息危害财产的安全
CSRF攻击示意图
解决CSRF攻击
使用csrf_token校验
1.客户端和浏览器向后端发送请求时,后端往往会在响应中的 cookie 设置 csrf_token 的值,可以使用请求钩子实现,在cookie中设置csrf_token
2.flask_wtf 中为我们提供了CSRF保护,可以直接调用开启对app的保护
一旦开启CSRF保护,就要设置秘钥:SECRET_KEY
csrf验证
1.表单提交方式
.服务器通过请求钩子在cookie中设置了csrf_token,实际上是在session中存储了未加密的csrf_token,并且将生成的sessionID编号存储在cookie中
在表单中我们添加了csrf的隐藏字段,在浏览器再次访问服务器时:
1.获取到表单中的csrf_token(加密的),使用secret_key进行解密,得到解密后的csrf_token
2.通过cookie中的sessionID,取到服务器内部存储的session中的csrf_token(未加密的)
3.将两者的值进行比较
2.ajax提交请求方式
在js里面,获取到cookie中的csrf_token,将其添加到ajax的请求头中
验证过程:
1.获取请求头中的csrf_token(加密的),然后使用secret_key解密,得到解密后csrf_token。
2.通过cookie中的sessionID,取到服务器内部存储的session中的csrf_token(未加密的)。
3.将两者的值进行比较
转载:https://blog.csdn.net/wireless911/article/details/81589202
还没有评论,来说两句吧...