MDN cookie https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies
Cookie 渐渐被淘汰。原因:
- 由于服务器指定 Cookie 后,浏览器的每次请求都会携带 Cookie 数据,
- 会带来额外的性能开销(尤其是在移动环境下)
- 新的浏览器API已经允许开发者直接将数据存储到本地,如用 Web storage API (本地存储和会话存储)或 IndexedDB
Set-Cookie 创建 cookie
当服务器收到 HTTP 请求时,服务器可以在响应头里面添加一个 Set-Cookie 选项。
浏览器收到响应后通常会保存下 Cookie,之后对该服务器每一次请求中都通过 Cookie 请求头部将 Cookie 信息发送给服务器。
另外,Cookie 的过期时间、域、路径、有效期、适用站点都可以根据需要来指定
cookie 很容易实现一个单点登录系统
使用session会产生诸多的问题,如何解决?直接将用户的认证信息存储在客户端的cookie中。
存在客户端 cookie就会面临着一系列的安全问题,例如
- 直接在 cookie中以用户id存储标识,用户自己篡改cookie,改成别的高级管理员的 id,是不是就可以切换自己的身份了呢?因此就要涉及到cookie信息加密和解密
除了加密与解密以外,还有一种解决方案:就是存储票据 ticket,其实和 session很像
- 在用户登录成功之后,站点生成一个ticket,一方面将用户身份信息存储在服务端缓存中,以ticket为key
- 另一方面,将ticket存储到用户的cookie中。这样,用户再要访问敏感信息时,只需要每次都带上自己cookie中的ticket就可以
Cookie 的作用域
sameSite
某些 Cookie 滥用推荐的“SameSite“属性
Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪
https://juejin.im/post/6844904095711494151
https://www.jianshu.com/p/4cd42f7359f4