1. 浏览器存储的一种, 大小一般为4k
  2. 每次http请求传输都可以携带
  3. 安全问题, xss攻击, 可以通过http-only设置来禁止js操作cookie
  4. 通过设置domain和path, 限制cookie携带的域名, 避免不必要的流量浪费
  5. 通过设置sameTitle来限制cookie传输的域名, 防止CSRF攻击
  6. 通过设置secure, 来限制必须在https上使用
  7. 服务端可以通过set-cookie来设置cookie

参考答案

  • Cookie最开始被设计出来其实并不是做本地存储的,而是为了弥补http在状态管理上的不足
  • http协议是一个无状态协议,客户端向服务器发请求,服务器返回响应,这次事件就完成了,但是下次发请求如何让服务端直到客户端是谁呢?在这个需求下就产生了Cookie
  • Cookie本质上就是浏览器里面存储的一个很小的文本文件,内部以键值对的方式来存储(在chrome开发者面版的Application这一栏可以看到)都会携带相同的Cookie,服务器拿Cookie进行解析,便能拿到客户端的状态 Cookie的作用就是用来做状态存储的,但是也有很多缺陷:
    1. 容量缺陷。Cookie的体积上限只有4KB,只能用来存储少量的信息
    2. 性能缺陷。Cookie紧跟域名,不管域名下面的某一个地址需不需要这个Cookie,请求都会携带上完整的Cookie,这样随着请求数的增多,其实会造成巨大的性能浪费的,因为请求携带了很多不必要的内容, 可以通过设置domain和path来限制
    3. 安全缺陷。由于Cookie以纯文本的形式在浏览器和服务器中传递,很容易被非法用户截取,然后进行一系列的篡改,在Cookie的有限期内重新发送给服务器,这是很危险的。另外,在HttpOnly为false的情况下,Cookie信息能直接通过js脚本来读取。