cookies 的安全问题 cookies 的特点 前端数据存储 后端通过 http 头设置 请求时通过 http 头传给后端 前端可读写 遵守同源策略(在同一个源里请求都会带上 cookie) 域名(指定域名下才能使用 cookie) 有效期(cookie 在一段时间有效,可以让有效期设置成过去的时间,可以删除 cookie) 路径(指定路径使用 cookie) http-only (只在htt…

cookies 的安全问题

cookies 的特点

  1. 前端数据存储
  2. 后端通过 http 头设置
  3. 请求时通过 http 头传给后端
  4. 前端可读写
  5. 遵守同源策略(在同一个源里请求都会带上 cookie)
  6. 域名(指定域名下才能使用 cookie)
  7. 有效期(cookie 在一段时间有效,可以让有效期设置成过去的时间,可以删除 cookie)
  8. 路径(指定路径使用 cookie)
  9. http-only (只在http请求的接收和发送中才能使用)
  10. secure(只能在 https 中请求才能使用 cookie)
  11. same-site 第三方网站不能使用 cookie

cookies 的作用

  1. 存储个性化设置

  2. 存储未登录时用户唯一标识

    1. 前端提交用户名和密码
    2. 后端验证用户名和密码
    3. 后端通过 http 头设置用户凭证
      1. 存用户 id

        cookie 会在前端被非法篡改

      2. 用户 id+签名

        同时设定 id 和签名,后续访问的时候,签名只会在后台知道,签名不可更改,就算前端改了 id,也为非法用户

      3. sessionId

        是一个随机的字符串,相当于一把钥匙,后端根据这个钥匙,找到用户信息,然后再验证身份,前端不会存用户信息。将用户的数据放在内存中,通过给前端发送一个随机字符串,前端不存任何数据,再次请求带上这个标识,就能够在内存中把之前的数据找出来,当后端程序重启,session 会丢失,为了解决这个问题,把 session 存在数据库中,要实现 session 持久化,把 session 放在外部存储中,比如数据库或者 redis 中,就解决了分布式 session 可能不同步的问题。

    4. 后续访问时后端先验证用户凭证
  3. 存储已登录用户的凭证

  4. 存储其他业务数据

cookies 和 xss 的关系

  1. xss 可能偷取 cookie,document.cookie 可以偷取 cookie,拿到用户登录态,做非法入侵
  2. http-only 的 cookie 不会被偷

cookies 和 csrf 的关系

  1. csrs 利用了用户的 cookie,b 网站向 a 网站发起请求,带上 b 网站的 cookie,但是 b 网站因为没访问 a 网站的前端,所以无法读取 cookie,使用 same-site 阻止第三方网站使用 cookie

cookies 的安全策略

  1. 签名防止篡改,

    加一个签名,虽然 userid 在前端存储,但是有签名的存在,用户无法随意修改,数据仍然是明文的,但有一个验证数据有没有更改的过程

  2. 加密

    把 userid 加密,只有加秘方才能知道加密的信息是什么

  3. http-only

    防止 xss

  4. secure

    只在 https 中使用 cookie

  5. same-site

    访问 csrf 攻击

暂无评论