asp.net - 使用 Windows 身份验证进行 session 管理

标签 asp.net iis windows-authentication session-management session-hijacking

在 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/

相关文章:

c# - 从未定义样式的 ASP.NET GridView 行

c# - GMap subgurim.net 仅显示灰色框

jquery - 发送自定义 header ,jQuery 不起作用

asp.net - 哪里有服务器变量或 <allowedServerVariables> 的列表?

sql-server - SSRS - 无法连接到数据源

java - 为什么 request.getRemoteUser() 有时会返回 tomcat Windows 服务帐户

c# - MailMessage c# - 如何使其成为 HTML 并添加图像等?

database - RavenDB build #2127 客户端异常 : [Argument_StreamNotReadable] when trying to create a new Database

.net - 无法使用基本身份验证进行身份验证

ASP.NET Identity + Windows 身份验证(混合模式 - 表单 + Windows)