在 ASP.NET Web 应用程序中,使用集成 Windows 身份验证, session 是否与 Windows 身份绑定(bind)?
换句话说,如果我登录(使用 IWA)该应用程序,并且该应用程序在我的 session 中存储了一些“内容”,那么这些内容是否可以单独通过 session ID 访问?例如,如果恶意者设法窃取了我的 session ID,但没有窃取我的凭据,那么他可以访问我的 session 内容吗?或者该 session 是否只能由相同的身份访问,需要两者 session ID 和 Windows 身份才能访问它?
最佳答案
很好的问题。在写这个答案之前,我刚刚进行了一个测试来确认。
如果我是“A 人”,而你是“B 人”,那么就会发生以下情况:
- 用户 A 使用 IWA 登录网站,并获得分配的 session ID(例如,在网址中)
- B 也以自己的身份登录网站(因此必须经过身份验证)
- A 向 B 发送包含 session 标识符的 URL 链接
- B 点击该链接,他们会使用 A 的 session 详细信息直接进入该网站
请注意,即使 B 正在使用 A 的 session 详细信息,网站仍将其识别为“B”。因此,如果您有检查用户权限等的代码,那么这些检查仍然在人员 B 的上下文中完成。
这听起来像是一个大问题,但只要程序员不粗心,这实际上并不是一个大问题。例如,B 在上面的测试中得到的唯一效果是他们继承了 A 设置的屏幕和网格布局,因为我们实时进行权限检查(即它们没有被缓存)。如果您在 session 中存储敏感数据,那么这可能是一个问题,但只有当显示这些数据的字段每次显示时都没有进行权限检查时,这才是问题。仅当 A 的 session 尚未过期时,这才会成为问题。
关于asp.net - 使用 Windows 身份验证进行 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1745875/