在互联网上有几种登录表单(例如Google的),您首先输入登录名,然后,一旦提交,您就可以输入您的密码。
其中的一个优点是,我认为,服务器可以拉出一个图像,只有它知道,并显示给用户,以帮助挫败简单的钓鱼计划。
我的问题是为什么没有人这样做--先问密码,然后再问登录名。
我可以看到一个明显的答案(密码可能不是唯一的,因此服务器不知道要显示谁的反钓鱼图像),但这并不能让我信服。立即禁用共享密码的帐户,或者至少迫使用户下次登录时将密码更改为唯一字符串,这可能是解决"123456“密码问题的方法之一。
我能看到的另一个问题是,在一个网络钓鱼场景中,用户正确地输入密码,然后注意到错误的图像显示给了他,他已经放弃了密码,剩下的就是识别这个密码属于谁。
我想知道的是,登录密码序列是否主要是由于约定或用户界面的考虑因素造成的,或者是否有其他安全问题需要首先请求密码(除了我提到的两个问题)。
发布于 2015-09-09 14:28:47
单独的密码本身不一定是可验证的。特别是,如果服务器做得很好,那么它就不会存储密码本身,而是将密码散列功能的输出计算在密码之上。密码哈希函数(而不仅仅是哈希函数)包含一些额外的功能,包括salt (出于非常好的安全相关原因)。然后,验证密码需要知道相应的盐类。因为salt是特定于实例的( salt的要点是不同的用户都有自己的盐类),所以需要用户标识(用户标识被用作salt的索引键)。
发布于 2015-09-09 21:07:42
你不是在问“我们没有公共密码和私人用户名有什么原因吗?”
它们都只是文本字符串。您执行唯一密码的想法实际上只是说用户名是唯一的。应用于文本框的标签不重要。我们将私有字符串称为密码,而唯一字符串称为用户名或用户ID,因为它是唯一的。
安全性方面,并按照Login/ password的正常顺序查看:如果您要求两者都是唯一的,那么您将对数据库进行攻击,因为每个检查的密码都将根据数据库中的每个用户进行检查,因为您要求您的密码是唯一的。所以这两种独特的都行不通。这两个非唯一的不能工作,因为你不知道哪个帐户被访问。这样就只剩下一个唯一的字符串了。如果您正在创建一个唯一的文本字符串,那么最好将其作为一个公共数据块,并首先检查它(我们将此数据命名为Login/ID/Username)。
发布于 2015-09-09 23:10:24
让我们想象一个类比..。
我是我的国王派来的信使,要给卡斯特山谷的一座城堡传递一封信。我知道我想去的城堡是什么样子,我得到了一个口令,告诉守卫,这样我才能被放进城堡。
关于如何做到这一点,我有两个选择:
第一个选择是它通常是如何完成的。没有理由改变那个惯例。另一种选择是可能的,但通过首先共享您的私人信息,在使用公共信息进行身份验证之前,您可以更容易地立即猜出每个人的密码,即骑马到每个城堡或尝试所有的公共帐户名称。在这个山谷里有数千座城堡,或者在一个网站上有账户,很可能有人会猜出一个简单的密码,然后简单地把它与几千个城堡或公共账户的名字中的一个匹配起来就容易多了。
https://security.stackexchange.com/questions/99892
复制相似问题