我最近开发了一个新的web应用程序,我们的客户登录到使用用户名和密码。当我们推出这个系统时,我们将自己设置用户名和密码,客户端将无法决定他们的初始密码是什么。
所以我需要给每个客户分配一个密码。
问题是我的老板希望这件事容易记住。他建议使用“苹果”、“橙色”、“香蕉”等。这将使我们面临字典攻击的巨大风险,而且,考虑到应用程序可以显示一些敏感信息,这将是一个值得关注的问题。
在一个完美的世界,密码应该在6-8字符左右的长度,容易记住,不包括空格或特殊字符。但他们也需要安全。
做这件事最好的方法是什么?我已经看到了关于安全密码的随机单词的xkcd漫画,但是,如果我把这个想法从4个缩短到两个简短的随机单词,这会安全吗?从本站生成的密码有多安全?
我选择的解决方案:根据特里的答案,我将允许用户自己更改他们的密码,因为我相信这是我们最好的课程。
发布于 2012-09-18 10:38:09
一个完全随机的密码到底有什么问题?
自动生成的密码应该由您的客户端在第一次登录时更改,因此不会出现可用性问题。您的客户端保留初始密码并不是一个好做法,因为它必须以明文格式发送给他们。为此目的,一次登录令牌将更加安全。
包含两个字典单词的密码是不安全的。一个简单的字典攻击尝试各种组合的单词会很容易破解你的密码。
发布于 2012-09-18 11:32:59
使用几个单词而不是一个密码实际上是一个好主意,但这只是因为有这么多可能的单词可用。您可以自己计算可能的组合:
Random characters:
26 characters in alphabet ^ 8 places = 2.0E11 combinations
52 case sensitive characters ^ 8 places = 5.3E13 combinations
Sentence with words:
135'000 words in dictionary ^ 4 places = 3.3E20 combinations
这个发光二极管有以下几个要点:
如果你创造一个可读的句子,它们可以长一点,而不会失去容易记忆的优点。“狗跳过蓝篱笆”比“狗跳蓝篱笆”难记。
发布于 2012-09-18 20:28:40
问题是我的老板希望这件事容易记住
然后问他,他是如何量化的,以及入侵系统有多容易。
答案现在已被接受,然而,没有人正在处理一些重大问题。是的,密码应该有足够的熵来防止它们被强制使用,但是作为应用程序开发人员,这并不是保护系统的唯一方法。您应该添加额外的控件,以限制特定帐户尝试登录的频率--并且可能限制帐户和特定远程地址的失败登录次数--这也意味着报告机制和解锁手段。
根据公认的答案,您不应该为用户选择密码。无论如何,应该生成一个初始密码--但是您的应用程序应该迫使用户在开始登录时将其更改为满足您的复杂性要求但用户能够记住的内容。如果这是一个面向公共的服务,那么最好使用openid。
https://security.stackexchange.com/questions/20316
复制相似问题