📜  cookie (1)

📅  最后修改于: 2023-12-03 14:40:12.828000             🧑  作者: Mango

Cookie

Cookie 是一种在客户端存储数据的技术。它是由服务器发送到浏览器的一小段文本,然后浏览器将其存储在本地计算机上。Cookie 常用于在不同的 HTTP 请求之间传递状态信息。

原理

一般来说,当浏览器请求网站时,服务器返回一个 HTTP 响应。在响应中,服务器可以设置一些头部信息,其中一个叫做 Set-Cookie。这个头部信息用于告诉浏览器在本地计算机上存储一个 cookie。

例如,服务器可以发送以下 HTTP 响应:

HTTP/1.1 200 OK
Content-Type: text/html
Set-Cookie: name=value; Expires=Wed, 09 Jun 2021 10:18:14 GMT; Path=/

在这个例子中,服务器设置了一个名为 name 的 cookie,它的值是 value。还设置了 ExpiresPath 等属性。

浏览器在接收到这个响应后,会将上述的 cookie 存储在该站点的 cookie 存储位置。它们将在之后的每个请求中包含在头部信息中,例如:

GET / HTTP/1.1
Host: www.example.com
Cookie: name=value

这意味着,当浏览器再次请求该服务器时,它会将保存在该站点的所有 cookie 一起发送到服务器。服务器可以根据接收到的 cookie 值判断用户的身份、设置用户的状态等。

用途

Cookie 常用于以下情景:

  • 会话管理:跨页面存储用户的状态信息,例如登录状态、购物车内容等;
  • 个性化设置:记录用户的首选项,如语言设置、字体大小等;
  • 追踪用户:在用户浏览网站时追踪用户行为,例如广告商会根据用户浏览行为推送相关广告;
  • 浏览器行为记录:记录浏览器的行为,例如本地缓存文件等。
安全性

Cookie 由于是在客户端存储,因此存在一定的安全风险。攻击者可能获取到存储在 cookie 中的敏感信息,或者修改 cookie 中的内容,以达到攻击的目的。

为了保证 cookie 的安全性,有以下几个方面要注意:

  • 只在必要的情况下使用 cookie,避免存储过多的敏感信息;
  • 为 cookie 设置 HTTP Only 标志,限制 JavaScript 访问 cookie,从而减少 XSS 攻击的风险;
  • 为 cookie 设置 Secure 标志,仅在使用 HTTPS 协议时发送,从而减少 MITM 攻击的风险。
参考