CSRF

  • 防跨站攻击
  • 防止恶意注册,确保客户端是我们自己的客户端
  • 使用了cookie中csrftoken 进行验证,传输
  • 服务器发送给客户端,客户端将cookie获取过来,还要进行 编码转换 (数据安全)
  • 如何实现的

    • 在我们 存在csrf_token 标签的页面中,响应会自动设置一个cookie: csrftoken
    • 当我们提交的时候,会自动验证csrftoken
    • 验证通过,正常执行以后流程,验证不通过,直接403,别人不知道你生成csrf规则,就被拒绝访问,也就不能收到攻击,将攻击者防在外面

我们之前在实验的时候将CSRF注释掉了,否则POST请求会失败

原因是应为我们没有给客户端进行授权

解决方法:模板two_token中添加标签

我们发现在POST请求中csrf_token检验了POST请求中有没有csrf_token这样一个字段,并且将其值取出来验证,验证成功则通过,否则登陆失败。(防止别人注册很多辣鸡账号)

倘若我们访问还是出现上述报错,尝试方法2:
在返回页面的views的方法上添加一个

@csrf_exempt

并且导入模块

from django.views.decorators.csrf import csrf_exempt

然后页面去掉 {% csrf_token %} 就能正常使用

算法

  • 编码解码

    • Base64
    • urlencode
  • 摘要算法,指纹算法,杂凑算法

    • MD5,SHA

      • MD5 默认是128的二进制
      • 也就是32位的十六进制
      • 最终转换成32位的Unicode
    • 单向不可逆的,这些不是加密算法
    • 不管输出多长,输出都是固定长度
    • 只要输入有任意的变更,输出都会发生巨大的变化
    • 用法:保护数据安全,指纹验证,假如下载pycharm客户端,为了保证你的下载文件没有被篡改或者植入木马以及完整,官方会给一个工具验证MD5值,保证完整性。
  • 加密算法

    • 对称加密

      • 一把钥匙
      • DES,AES
      • 加密解密效率高
      • 钥匙一旦丢失,所有数据就全玩完了
    • 非对称加密

      • 两把钥匙,成对的
      • 公钥和私钥
      • RSA,PGP
      • 安全性最高
      • 算法复杂,需要时间长
      • 支付宝,微信都是RSA

    目前状态

  • MTV

    • 基本完成
    • Template不会再讲了
    • Views也不会再讲了
    • Model

      • Model关系,一对一,一对多,怎么操作
      • Model继承
  • 高级

    • 第三方插件
    • 底层的部分原理

      • AOP 面向切面编程

        • 反扒策略
        • 安全策略
    • 文件上传
    • 前后端分离

      • RESTful
    • 日志
    • 后台管理
    • 用户角色,用户权限,不同用户有不同权限,能访问不同的管理页面
    • 部署
    • 支付宝支付功能
最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,请随意赞赏