1

根据我对会话劫持工作方式的了解,我认为 Forms Authentication 与在 ASP.NET 会话中存储用户身份验证信息相比没有任何优势。表单身份验证和 ASP.NET 会话都使用经过哈希处理的 cookie 来验证完整性,但都无法防止黑客窃取 cookie 并伪装成用户。那么就安全性而言,是否有任何理由使用表单身份验证而不是在 ASP.NET 会话中存储身份验证信息?

4

2 回答 2

1

几个不同点:

如果您将身份验证信息存储在会话状态中并且应用程序池回收,您的所有用户都会立即注销。相比之下,表单身份验证在表单身份验证 cookie 中以加密格式保存必要的信息,并且将在应用程序池回收后继续存在。

会话 ID 是一个 120 位的随机数。唯一的保护是随机性。没有防篡改功能,实际上黑客可以使用随机会话 ID 不断地轮询您的网站,直到他找到一个有效的。这种活动没有入侵检测机制,因为无法区分被篡改的会话 ID 和过期的会话 ID。

表单身份验证票 (cookie) 完全不同。它由一长串数据组成,然后用您的 128 位机器密钥加密。如果有人篡改它,它根本不会解密。解密失败是一个可捕获的错误,可以加入入侵检测机制。票证的整体基数更高,更难暴力破解。

在我最近使用的所有网站上,我们实际上都使用了表单身份验证机制和 ASP.NET_SessionId。我们还有一个内部会话 ID(一个 ESB 会话标识符),我们将其插入到表单身份验证票证中。

于 2013-10-04T23:57:47.880 回答
0

我听到的关于使用 Forms 身份验证而不是在 Session 中存储身份验证信息的唯一有趣的论点是,我可以对 Forms Auth cookie(到期日期等)施加更多限制,但不能对 Session cookie 施加更多限制。因此,如果用户在 30 分钟后被迫再次登录,诸如用户偏好或任何会在会话中持续存在并且不会丢失的东西。是的,我不知道

于 2012-01-04T15:52:07.933 回答