我认为 cookie 仅作为文件存储在客户端。然后我意识到如果cookie没有存储在服务器端,服务器如何将刚刚从客户端接收到的cookie与过去创建的某个会话或其他信息相匹配?
那么cookie信息也存储在服务器端是否正确?
服务器如何存储 cookie 信息?
我搜索了“客户端 cookie”和“服务器端 cookie”并达成了几个讨论,包括
谢谢。
我认为 cookie 仅作为文件存储在客户端。然后我意识到如果cookie没有存储在服务器端,服务器如何将刚刚从客户端接收到的cookie与过去创建的某个会话或其他信息相匹配?
那么cookie信息也存储在服务器端是否正确?
服务器如何存储 cookie 信息?
我搜索了“客户端 cookie”和“服务器端 cookie”并达成了几个讨论,包括
谢谢。
这是一个很好的安全问题。必须了解他们所使用的机制,以确保他们正在构建安全的软件。
安全
当服务器可以访问 cookie 信息时,不会增加重大的安全风险。服务器已经是一个需要强力保护的特权系统。
[评论] ... [a] 服务器如何识别新请求与以前的一些请求来自同一用户,而不记住来自某个用户的以前的请求...?
如果服务器将加密或签名数据存储在客户端 cookie 中,则服务器可以验证这一点。它可以推断只有经过授权的服务器才能存储该 cookie。
一个很好的现代例子是 JWT - https://jwt.io/。它们可以在 cookie 中发送,但通常它们会进入 Web API HTTP 请求的授权标头。如果您对 JWT 了解得更多,则可以了解可以使用更简单的机制部署的加密原理,用于 cookie 中的少量数据。
知识
服务器如何将刚刚从客户端接收到的 cookie 与过去创建的某个会话或其他信息相匹配?
Cookie 存储在客户端的浏览器中,并在超时后被删除。在对服务器的每个 HTTP 请求时,它们都会自动发送到服务器。cookie 通常由服务器设置,而不是客户端设置(但这是可能的)。
服务器通常使用直接值,或者为本地数据库查找解密一个值。例如,用户 ID 值可以存储在加密的 cookie 中。
使用 cookie 的一个关键架构原因是维护与用户身份相关联的会话。它们也被用作一种分布式数据存储,因此服务器已经在 HTTP 请求时获得了这些信息,而无需在会导致延迟的磁盘/数据库上查找它。
会话可能与 Web 服务器内存中的键 (GUID) 相关联,也可能是数据库中新会话记录的键。在这两种情况下,密钥都是由 cookie 中继的。
服务器如何存储 cookie 信息?
服务器可以存储它们,但这不是人们从概念上看待它们的方式。在某种程度上,服务器确实存储了数据——会话键是记录的主键(数据库或散列字典查找)。对于加密的 UserID,服务器端也有他们的密钥。在某种程度上,客户端并没有“存储”它,它更像是一个密钥的副本。但是有可能并且很可能会发生,客户端存储未在服务器端持久保存的不同信息。
服务器是否总是有 cookie 信息的记录?
否。以下是一些服务器没有 cookie 信息记录的情况:
虽然服务器端并不总是在它通常拥有的地方拥有该信息,因为 cookie 用于上下文。当有一个 HTTP 请求时,服务器需要知道它来自谁,他们被授权使用什么角色,以及他们之前是否见过。