【发布时间】:2012-11-16 10:07:21
【问题描述】:
我正在使用 HttpContext.Current.User.Identity.Name 来获取登录用户的用户名。我想知道这是如何工作的(使用 NTLM v2 / Kerberos)以及它的安全性如何?用户可以尝试模仿他是其他人吗?
基本上,从安全的角度来看,有什么我应该担心的,或者我应该如何改进它?
【问题讨论】:
-
您绝对可以放心!一旦用户通过身份验证(并且它是可能存在安全问题的地方),那么该属性就可以完全安全地使用。您可以改进/选择的是身份验证方法、密码强度、http(非-s)嗅探和类似的东西。
-
@Adriano - 我的应用程序正在使用 HTTPS。身份验证方法仅在 Windows 登录时完成,而不是与应用程序有关,这是正确的吗?有没有关于这个问题的微软参考资料?
-
您使用 Windows 身份验证吗?那么它应该足够安全(并且薄弱的部分是Windows用户用于登录的密码)。根本不用担心 User.Identity,它是安全的。安全问题更容易来自我们编写的代码(以及用户将选择的密码),而不是来自“基础设施”和经过良好测试的代码。
-
@Adriano - 'HttpContext.Current.User.Identity.Name' 是集成 Windows 身份验证的示例吗?因为这就是我在应用程序上用于 Windows 身份验证的内容。从 Active Directory 身份验证的角度来看,我们应该使用它,是的!
-
用户是谁以及他们如何进行身份验证是两个独立的问题 ntlm x.509 证书和 Web 表单是识别和身份验证过程的一部分 身份验证成功完成后系统会报告当前用户身份。使用至少 1024 位的 https 和 ssl 证书保护协议,以防止流量嗅探,域内连接的 ntlm 将是安全的