【发布时间】:2009-11-03 06:53:21
【问题描述】:
这不是常见的问题“存储纯文本用户的密码安全吗?”。不,这不安全,我们都知道。
我正在编写一个小应用程序,它应该针对外部系统进行身份验证以执行某些操作,唯一可用的身份验证方法是通过用户名和密码。它是为人类设计的,无法更改。
有多个用户可以访问我的应用程序,每个用户都单独进行身份验证,但是他们都针对外部系统“共享”相同的身份验证数据,理想情况下,这些数据由应用程序透明地管理。
“愚蠢”的解决方案是将用户名/密码以纯文本形式存储并用于身份验证,但显然这并不安全。密码可以加密,但如果有人闯入系统怎么办?
可能的解决方案:使用 DPAPI 透明地加密/解密密码(甚至可能是用户名)。这是一个好主意吗?这安全吗?多台机器的设置如何(机器之间的加密是否兼容)?
您还有什么建议吗?
【问题讨论】:
-
我认为 DPAPI 可能是您最好的选择。我不明白你说的网络农场是什么意思……
-
我不确定这是否正是您正在寻找的,但是像 DBM 和此类用途这样的散列解决方案呢?对用户的密码进行哈希存储,当他们进行身份验证时,对他们提供的密码进行哈希处理,并将其与现有哈希值进行比较。这是一种常用的密码存储方式。附言- 根据您想要/需要的安全级别,我绝对建议您对哈希进行加盐以避免彩虹表类型的攻击。请参阅最新一期的“2600”,了解有关 Microsoft 长期以来如何使用未加盐的哈希值存储用户密码的文章。
-
@Bob:不是问的!他需要有可用的密码,因为他正在将密码发送到外部系统。他正在针对其他人进行身份验证,而不是在他的系统中进行身份验证。
标签: .net security passwords dpapi