一、csrf概念
- CSRF(Cross-site request forgery),中文名称:跨站请求伪造。简单理解为:攻击者盗用了你的身份,以你的名义发送恶意请求。以你的名义发送邮件,盗取账号,购买商品等等....
-
要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1.登录正常网站A,浏览器保存了你的Cookie。
2.在不退出网站A的情况下,访问危险网站B。
二、Django防御
- django默认开启了csrf中间件
- 表单post提交数据的时候加上 {% csrf_token %} 标签
三、防御原理
- 渲染模板文件时,页面生成一个名为csrfmiddlewaretoken的隐藏域
- 服务器交给浏览器保存一个名为csrftoken的cookie信息
- 提交表单时,两个值都会发送给服务器,服务器对比,如果一样,则csrf验证通过,否则失败