django 的 form 表单POST请求和CSRF

·
  说到POST,离不开CSRF。
  
  CSRF(跨域伪造攻击):
    在所有的网络安全攻击当中,CSRF是使用量最少。
    也是最难防备的(因为使用量少,所以大神们不注意)
    
    而CSRF诞生之初的目的:
      非法转账,当年的成功率有98%。
      后来,才几天时间。被发现之后,就被修复了。
      
    它就是在模仿、伪造一个用户的身份,进行一个合法的请求。所以服务器很难看出来。
    
    后来作为一个最基础 web 安全技术传承下来,发生的概率特别小。
    因为很简单,很多人不屑于去使用。
    但是发生之后,成功率又特别高。
    这就很尴尬了。
    
    我们来模仿一个最简单的CSRF
    django 的 form 表单POST请求和CSRF_第1张图片
    django 的 form 表单POST请求和CSRF_第2张图片
    django 的 form 表单POST请求和CSRF_第3张图片
    django 的 form 表单POST请求和CSRF_第4张图片
    django 的 form 表单POST请求和CSRF_第5张图片
    django 的 form 表单POST请求和CSRF_第6张图片
    
    ——————————————————————————
    
    我们来看一下CSRF流程图
    django 的 form 表单POST请求和CSRF_第7张图片
    ——
    简单说明一下:
      用户登录目的网站
      目的网站会给用户配置一个身份
      
      用户访问了恶意网站(恶意网站通过诱人的方式使用户进行点击)
      恶意网站获取了用户网站的身份
      
      恶意网站使用用户的本地记录,携带用户的身份访问目的网站
      恶意网站的所有操作都是以用户的身份进行的
      
      形成了一种用户访问目的网站的错觉
    ——
    Django 本身对 CSRF 就有防备措施,在 Django1.4 版本之前,CSRF 默认关闭(不防备CSRF),1.4版本之后默认开启。
    Django 采用了给请求者随机下发一个校验码,来证明请求者的身份。
    Django 的 CSRF 针对 POST请求,GET 请求不需要 CSRF。
    
    django 的 form 表单POST请求和CSRF_第8张图片
    使用POST请求,就必须要用到 CSRF 。否则就会报 403 的错误。
    
    ——
    在浏览器上
    可以通过url代替搜索框的提交
    
    django 的 form 表单POST请求和CSRF_第9张图片
    所以,当你无意见点击什么按钮。
    你完全不知道你跳转到哪个页面。
    可能对方用前端知识给你展示一些花哨、诱人的特效,
    但不经意间已经利用你的身份访问一些对方不能访问的地址。
    
    ——
    好了,现在我们开始进入主题!
    
    在 Django 当中使用 csrf 的步骤。
    
    ⒈首先:
      配置settings文件
      django 的 form 表单POST请求和CSRF_第10张图片
    ⒉
      将试图函数中返回的方法切换为 render
      django 的 form 表单POST请求和CSRF_第11张图片
    ⒊
      在前端页面上加入 csrf_token 标签
      django 的 form 表单POST请求和CSRF_第12张图片
      django 的 form 表单POST请求和CSRF_第13张图片
      django 的 form 表单POST请求和CSRF_第14张图片
      django 的 form 表单POST请求和CSRF_第15张图片
      我们来看一下展示效果
      django 的 form 表单POST请求和CSRF_第16张图片
      django 的 form 表单POST请求和CSRF_第17张图片

你可能感兴趣的:(Django)