会话 cookie 是否足够安全以存储用户 ID

本文关键字:存储 用户 ID 安全 cookie 是否 会话 | 更新日期: 2023-09-27 18:32:08

我正在使用会话cookie(不是永久cookie)来保存用户ID以了解用户是否已登录。

基本上,用户登录,我们检查凭据,然后设置会话cookie userID = 37(对于此特定用户,另一个用户将有73或69,依此类推...

Session.Add("UserID", 37);

我的问题是,登录用户是否有可能以某种方式将此会话 cookie 从 37 更改为 73,从而欺骗服务器认为他实际上是用户 73?如果是,那么我做错了什么,如何处理这种情况?输入会话用户ID和密码哈希并每次检查它们似乎很疯狂??

我们也在以后的查询中使用此 UserID 值来限制它们。

如果这不是一个确切的代码问题,我很抱歉,但它与我的代码非常相关。

会话 cookie 是否足够安全以存储用户 ID

会话 Cookie 仅包含会话 ID。它用于标识用户。它只包含更多内容。此会话的实际信息存储在服务器上。所以这是安全的。用户永远无法更改存储在服务器上的值。如果您将其存储在会话中,则用户无法更改其 ID。

话虽如此,在处理用户 ID 时,您可以考虑使用表单身份验证来跟踪经过身份验证的用户,而不是使用会话重新发明轮子。

ASP.NET 会话状态提供了比客户端状态管理技术重要的安全优势,因为实际状态存储在服务器端,而不是在客户端和HTTP请求路径上的其他网络实体上公开。但是,为了维护应用程序安全性,需要考虑会话状态操作的几个重要方面。安全最佳实践分为三大类:防止会话 ID 欺骗和注入、保护后端中的状态存储,以及确保专用或共享环境中的会话状态部署安全性。

阅读 : 保护会话状态

这不是cookie,并且非常安全,因为它不能被用户更改。存储在服务器端 cookie 中的唯一内容是会话 ID。

正如其他答案所指出的,实际值(示例中为 37)存储在服务器上,而不是客户端上,但这并不意味着您不受潜在攻击的影响。 此机制仍然容易受到跨站点脚本攻击。 基本上,存储在客户端cookie上的是一些大的长标识符。 如果实际用户以外的其他人获得了该标识符,他们可以将其放入自己的cookie中,并基本上假装是该用户。 您可以自己研究更多的跨站点脚本(我不是该主题的专家),以查看恶意用户尝试查看其他用户的cookie并尝试将其设置为自己的一些常见方式,以及防御此类攻击的方法(我相信其中一些将由浏览器和ASP为您完成)。