我是否必须在客户端计算机上存储cookie,即使没有记住我

本文关键字:cookie 记住我 存储 是否 计算机 客户端 | 更新日期: 2023-09-27 18:33:46

我有一个登录系统,我必须编码。但我不明白的是,即使没有记住我,我是否必须在客户端计算机上存储cookie?如果我将所有必需的信息存储在会话本身中并使用它来检查我的 BasePage 以查看用户是否经过身份验证,那不是更好和"安全"吗?

如果要构建"记住我"功能,那么它将需要cookie,对吗?请对此有所了解。

我是否必须在客户端计算机上存储cookie,即使没有记住我

是的,你会的,或者你将不得不在你创建的每个链接的查询字符串上携带一些东西。 网络编程是完全无状态的。 你真的不知道哪个用户在请求哪个页面,或者登录了,除非你给客户端(浏览器)一些东西每次都发送回服务器。

如果你得到的请求只是"www.example.com/page.aspx",那么你不知道那是我,我的兄弟,我的猫,还是其他随机的人。 为了知道是ME请求了该页面(因此有权使用它),您必须使用会话cookie或在查询字符串上传递值。

问题是,HTTP协议是无状态的,因此会话(以及请求之间的任何类型的持久性)需要每个连续的请求向服务器证明它确实来自以前的客户端。这样,您必须随请求一起发送其他信息。对于会话,使用会话 id-s,通常通过 cookie 或将会话 ID 作为 GET/POST 参数传递(非常不安全/不推荐)。所以你需要饼干来会话。

身份验证和授权不同于会话管理。至少 ASP.NET 团队是这样看待它的。如果身份验证/身份验证失败,出于安全原因,系统不应访问任何资源,因为它可能会导致 DOS 攻击。如果您使用会话来存储身份验证和/或授权的详细信息,并且会话来自数据库,那么即使是无效的用户,也会进行数据库调用,从安全角度来看,这并不好。因此,将事物用于它们被制造的目的。