这有多不安全?

时间:2011-01-18 13:50:40

标签: django security passwords

寻找反馈。我正在构建一个django应用程序,用户可以随机获得密码。

目前,使用django auth中的make_random_password()函数生成密码。

然而,早期的反馈是电子邮件太难记住(即使用户可以更改它们)。

这是一个已关闭(仅限邀请)的应用,但它存在于互联网上。共有约600名用户。我有一个解决方案,我觉得有点不安全,但我想由SO用户运行它,因为它解决了反馈问题

在我的settings.py文件中,我创建了两个列表,一个包含大约20个汽车名称,另一个包含大约40个动词(大写)。

我要从每个列表中随机选择一个,将它们连接在一起,然后在最后添加一些随机字符。

所有密码长度至少为9个字符,保存时使用django的set_password()函数进行哈希处理

我看到的最大问题是,如果有人要访问SFTP服务器,他们就可以访问我的代码,从而获得破解密码的模板。

但他们也会有数据库访问等,所以这真的是一个问题吗?

4 个答案:

答案 0 :(得分:8)

您应该始终认为攻击者可以访问您的密码生成方案。假设他不是通过默默无闻地信任安全,那么基于您的安全性。 Obscurity可以提供一个很好的安全奖励,但你永远不应该依赖它。

您必须假设攻击者知道两个列表的内容。例如,他可以简单地注册大约40次,然后知道它们中的很大一部分。

你的汽车名称与动词一起有大约9.6(= log2(20)+ log2(40))位的熵。对应于大约2个随机字符。那是非常低的。

答案 1 :(得分:3)

您可以在用户首次登录时强制更改密码吗?或者,如果您的所有用户都已登录,请强制密码更改下次登录?这样,您可以保持更安全的密码,用户不会抱怨随机生成的密码难以记住,因为他们必须将密码更改为他们记住的密码。

答案 2 :(得分:3)

如何使用OpenID系统,因此他们不必记住另一个密码。在互联网上有一些Django集成。缺点是你需要知道他们的OpenID才能在发出邀请之前将它们添加到auth DB中......

答案 3 :(得分:1)

创建随机密码的概念,只要你有一个标志,说明用于生成密码的随机密码生成模式,因为你需要在以后的登录中检查密码..你在做什么?如果是,则添加盐渍模式以使其安全,最后生成的总盐的哈希将更安全。试试这个..