CSRF-跨站请求伪造

CSRF-跨站请求伪造

CSRF描述

CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。借花献佛、挂羊头卖狗肉。
造成的问题:个人隐私泄露以及财产安全。
CSRF攻击示意图:
在这里插入图片描述
主要原因:
  客户端访问服务器时没有同服务器做安全验证

防止 CSRF 攻击

步骤:

  • 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值
  • 在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token
  • 在用户点击提交的时候,会带上这两个值向后台发起请求
  • 后端接受到请求,以会以下几件事件:
    1. 从 cookie中取出 csrf_token
    2. 从 表单数据中取出来隐藏的 csrf_token 的值 进行对比
    3. 如果比较之后两值一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

添加生成 csrf_token 的函数
#生成 csrf_token 函数
def generate_csrf():
return bytes.decode(base64.b64encode(os.urandom(48)))

在 Flask 项目中解决 CSRF 攻击
在 Flask 中, Flask-wtf 扩展有一套完善的 csrf 防护体系,对于我们开发者来说,使用起来非常简单
在 FlaskForm 中实现校验
设置应用程序的 secret_key
用于加密生成的 csrf_token 的值
app.secret_key = “#随机字符串#”

导入 flask_wtf.csrf 中的 CSRFProtect 类,进行初始化,并在初始化的时候关联 app
from flask.ext.wtf import CSRFProtect
CSRFProtect(app)

猜你喜欢

转载自blog.csdn.net/weixin_40302130/article/details/84201196