一、csrf概念

  • CSRF(Cross-site request forgery),中文名称:跨站请求伪造。简单理解为:攻击者盗用了你的身份,以你的名义发送恶意请求。以你的名义发送邮件,盗取账号,购买商品等等....
  • 要完成一次CSRF攻击,受害者必须依次完成两个步骤:

      1.登录正常网站A,浏览器保存了你的Cookie。

      2.在不退出网站A的情况下,访问危险网站B。

 

二、Django防御

  • django默认开启了csrf中间件

csrf攻击防御

  • 表单post提交数据的时候加上  {% csrf_token %} 标签

csrf攻击防御

 

三、防御原理

  1. 渲染模板文件时,页面生成一个名为csrfmiddlewaretoken的隐藏域
  2. 服务器交给浏览器保存一个名为csrftoken的cookie信息
  3. 提交表单时,两个值都会发送给服务器,服务器对比,如果一样,则csrf验证通过,否则失败

csrf攻击防御

 csrf攻击防御

相关文章: