Django中CSRF攻击原理及其防御方式

CSRF攻击原理(只正对POST请求方式):

  1. 登入正常网站之后,你的浏览器会保存sessionid,如果你没有退出
  2. 你不小心访问了另一个恶意网站,这个网站是模拟正常网站中修改密码的网站,且隐藏那些修改信息,可能只显示一张图片或者是一个按钮,你不小心点击这个按钮,那个这个按钮的action就是去访问正常网站的修改用户的界面的url并附带有修改密码的post表单,那么你的数据就会被修改。
     

Django防御csrf的方式:

  1. Django默认启动了csrf防护,在settins.py文件中MIDDLEWARE_CLASSES中的"django.middleware.csrf.CsrfViewMiddleware", 如果注释这行,表示关闭防御CSRF攻击,注意点: CSRF攻击只针正对post提交
    Django中CSRF攻击原理及其防御方式_第1张图片
  2. 表单提交数据时加上{% csrf_token %}标签

 
Django防御原理:

  1. 开启Django中CSRF防御,且在表单中添加{% csrf_token %}, 那么在渲染模板文件时在页面生成一个名字叫做csrfmiddlewaretoken的隐藏域。
    Django中CSRF攻击原理及其防御方式_第2张图片Django中CSRF攻击原理及其防御方式_第3张图片
  2. 服务器交给浏览器保存一个名字为csrftoken的cookie信息
    Django中CSRF攻击原理及其防御方式_第4张图片
  3. 提交表单时,俩个值都会发给服务器,服务器进行比较,如果一样,则csrf验证通过,否则失败

你可能感兴趣的:(Django)