Django框架08:CSRF

  • 内容
  • 相关

一、什么是CSRF?

① CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。
② CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......
③ 造成的问题:个人隐私泄露以及财产安全。


二、CSRF攻击示意图

CSRF攻击过程.png


三、防止 CSRF 攻击

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


四、在 Django项目中解决 CSRF 攻击 

在django的模板中,提供了防止跨站攻击的方法,使用步骤如下:


① step1:在settings.py中启用'django.middleware.csrf.CsrfViewMiddleware'中间件,此项在创建项目时,默认被启用

② step2:在csrf1.html中设置令牌

{% csrf_token %}
或者
<input type="hidden" value="{{ csrf_token }}">
您阅读这篇文章共花了: 

本文标签:

版权声明:转载请带上版权原创为《辛诚

解压密码:若设有密码均为:www.xcooo.cn

收录状态:百度未收录

Django框架08:CSRF

发表评论

您可以选择匿名评论,保护个人隐私 !

评论

3条评论
  1. avatar

    repostone Lv.1 Chrome 63.0.3239.132 Chrome 63.0.3239.132 Windows 8.1 x64 Edition Windows 8.1 x64 Edition 回复

    非技术的路过。

    北京市 移动

    1. avatar

      VPS234 Lv.1 Chrome 76.0.3809.132 Chrome 76.0.3809.132 Windows Windows 回复

      Python我除了知道这个框架做web,其他的还真不熟悉

      四川省成都市 电信

      1. 辛诚 Chrome 76.0.3809.100 Chrome 76.0.3809.100 Windows Windows 回复

        回复了VPS234:是的 表情

        湖南省常德市 电信