HTTP Cookie(也称为 Web Cookie、浏览器 Cookie 或简称 Cookie)是服务器发送到用户浏览器并保存在浏览器上的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态、记录用户偏好等。
cookie的原意是曲奇,一块小的饼干,也就对应着在网络里表示一小块数据。

cookie是储存在浏览器上的,当浏览器进行登录操作发送请求时,服务器会进行cookie的处理。然后通过应答返回给浏览器,下一次浏览器再次申请时,就可以带着这个cookie进行请求,服务器就可以直接识别账号等信息了!
也就是说有了cookie的存在,我们不用每次登录B站都要输入自己的账号密码,网站能自动识别用户,因为将用户的数据存储在了cookie当中!还可以标识用户状态,对用户的登录状态进行保持,方便随时验证用户身份,还能识别是否是VIP会员、普通会员还是游客!
如果 cookie 是一个持久性的 cookie,那么它其实就是浏览器相关的,特定目录下的一个文件。但直接查看这些文件可能会看到乱码或无法读取的内容,因为 cookie 文件通常以二进制或 sqlite 格式存储。一般我们查看,直接在浏览器对应的选项中直接查看即可。
比如在CSDN当中的cookie数据:

安全性: 由于 Cookie 是存储在客户端的,因此存在被篡改或窃取的风险!
用途:

Set-Cookie: <name>=<value> 其中 <name> 是 Cookie 的名称,<value> 是 Cookie 的值。
完整的 Set-Cookie 示例:
Set-Cookie: username=peter; expires=Thu, 18 Dec 2024 12:00:00 UTC; path=/; domain=.example.com; secure; HttpOnly
注意事项:
非常的不安全!这就需要session出马了!
HTTP Session 是服务器用来跟踪用户与服务器交互期间用户状态的机制。由于 HTTP协议是无状态的(每个请求都是独立的),因此服务器需要通过 Session 来记住用户的信息。
与 Cookie 相似,由于 Session ID 是在客户端和服务器之间传递的,因此也存在被窃取的风险! 但是一般虽然 Cookie 被盗取了,但是用户只泄漏了一个 Session ID,私密信息暂时没有被泄露的风险。
可以通过 HTTPS 和设置合适的 Cookie 属性(如 HttpOnly 和 Secure)来增强安 全性。
Session 可以设置超时时间,当超过这个时间后,Session 会自动失效。 服务器也可以主动使 Session 失效,例如当用户登出时。
session是相对安全的,sessionid也有可能被盗取!
session是服务器创建,服务器管理的,所以当服务器辨别到sessionid有被盗取的风险,只要让sessionid失效就可以了。
那么服务器是怎么知道这个client对应的session是一个非法的呢?需要跟业务结合!
比如QQ在异地登录的时候,腾讯的服务端会识别到,需要我们重新扫码验证才能异地登录,这里的异地登录就是可能潜在被盗用的风险。
HTTP Cookie 和 Session 都是用于在 Web 应用中跟踪用户状态的机制。Cookie 是存储在客户端的,而 Session 是存储在服务器端的。它们各有优缺点,通常在实际应用中会结合使用,以达到最佳的用户体验和安全性。
但是session和cookie都不是绝对安全的!session只是比cookie相对安全!
所以我们要认识到,在网络世界里,几乎没有东西是绝对安全的。