我有一个 Web 应用程序,它需要的安全性超出了普通 Web 应用程序的安全性。当任何用户访问域名时,系统都会向他们显示两个文本字段,一个用户名字段和一个密码字段。如果他们输入有效的用户名/密码,他们就可以访问 Web 应用程序。标准的东西。
但是,我正在寻找超出此标准设置的额外安全性。理想情况下,这将是一个软件解决方案,但我也愿意接受硬件解决方案(硬件=密钥卡),甚至程序更改(例如,在密码板上使用一次性密码)。
该 Web 应用程序的独特之处在于,我们提前了解了所有用户,并创建了他们的用户名和密码并将其提供给他们。从这个意义上讲,我们可以确保用户名和密码是“强”的。
但是,我们的客户要求提供额外的安全保护。有人知道如何为安全增加另一层复杂性吗?
答案1
Dan 说过,增加复杂性不会带来任何额外的安全性。你需要额外的因素验证。查看双重身份验证了解各种解决方案的列表和实践的一般描述。身份验证分为 3 个主要类别:
- 有一些东西(遥控钥匙、智能卡、手机)
- 知道一些事情(密码、数字证书(这只是一个很长的密码!))
- 成为某人(指纹、视网膜指纹)
普遍的共识是,你至少需要二前者具有可靠的安全性。重复的密码毫无用处(两个密码并不比一个好。两个密钥卡也不比一个好)。您可以钓鱼获取密码,但滚动数字密钥卡会限制可用性。您可以击倒某人并窃取指纹(好莱坞电影),但您无法获取他们的密码。
请注意,密钥卡不需要是用户钥匙串上的另一个设备,只需是与计算机分开的设备,并且密码存储在某个地方绝不存储。智能手机通常符合这一要求,如果您可以开发一款在用户智能手机上运行的应用程序,您可能会降低一些成本。这取决于公司需要多大的部署。
还,出于对你所崇拜的任何神的爱不强制规定最大密码长度。
答案2
由于如今手机在大多数可以上网的地方都很普及,
因此使用手机作为第二点的双因素身份验证机制非常有意义。
甚至谷歌最近进入了这个圈子。
在某些情况下,电话无法接通,或者您不想让客户等待移动第二因素序列的时间滞后。
这里有一个技巧,可能已经获得专利和/或被广泛使用 :-)
我记得在一次技术演示中看到过一种方案,该方案使用提前发送给客户的一次性代码。当他们使用可用的代码时,新的代码会发送到他们的手机上——当此发送发生时,以前的代码将过期。这是一个非常简单而有趣的方案。
重要的是要知道,双重或多重身份验证并不会降低用户学会更好地保护密码的重要性。
另外,我听说有人把硬件钥匙放错了地方,这些钥匙会勾掉 8 位身份验证序列,而他们把现在不那么重要的密码放在外面(或放在钱包里)。因此,有了第二重验证,人们有时会感到虚假的安全,因为他们认为自己把鸡蛋分散在了不同的篮子里。
答案3
除了硬件之外,大多数额外的安全措施只是告诉用户要设置 2 个密码而不是 1 个。只要他们有一个强密码,这没有任何意义。还有其他特定的安全措施用于其他目的。比如对于我的银行,我首先输入我的用户名,然后我选择的图片会弹出来“证明”我在正确的网站上。但是,这很容易被非法网站攻破,非法网站会从合法网站上检索我的照片。
最终,我认为从软件方面来说,没有什么可以比强制使用更强的密码更好地增加安全性(除了正常程序,例如从不存储纯文本密码、使用 https 等)。
尽管如此,你还是可以采取很多措施来增加安全性。比如有些银行会将你的答案设为安全问题,并输入密码。有几种方法可以使用软件增加真正的安全性,比如 IP 过滤,但这对大多数 Web 应用程序来说并不实用。
正如您所说,有几种硬件解决方案,例如密钥卡。如果您想增加真正的额外安全层,我相信这是您的最佳选择。
答案4
我发现电话因素但它只能供有限数量国家的客户使用。