我有一个通过管理区域内的表单添加的学生列表。我正在尝试为管理面板(如下所示)提供安全且可查看的每个添加的密码生成解决方案。
我需要它可以查看,以便管理员能够打印出密码并将其交给父母。但我也希望它们在发生数据库泄露时保证安全。有什么想法吗?
答案 0 :(得分:3)
如果您希望密码可见,那么在发生泄露时,密码永远不会真正安全。
您可能有兴趣查看以下Stack Overflow帖子以供进一步阅读:
答案 1 :(得分:1)
以2种形式存储密码:
1)用于安全验证的MF5 / SHA1哈希
2)AES使用主密码进行编程。即为了查看密码,您输入主密码和宾果游戏。在盗窃的情况下,攻击者不会轻易获得密码(但可能会暴力破解)。
答案 2 :(得分:1)
这是我应该说的几次不应该向用户调整软件的次数之一。你在这里谈论一个主要的安全风险。
我建议制作一些报告生成器来打印密码,这些密码可以动态创建(生成/加盐和散列并保存)它们用于打印。有了这个,你也可以生成要发送的字母。使流程大部分自动化,一个人只需将它们发送到打印机(如果有必要的话)。
祝你好运。答案 3 :(得分:1)
你不应该这样做。
生成可以使用的一次性密码(也可以以明文形式存储),以通过网络设置新密码。
一旦打印出密码,其他人就可以轻松访问这些密码,因此如果您将密码存储在加密状态,则无关紧要。
答案 4 :(得分:0)
你可以让另一个XOR。
如果密码要安全,则不得将其存储在数据库中(存储some_hash(per_user_salt + password)
并在登录时进行比较(如@Daniel Vassallo所述)
如果密码是可见的,那么你必须提供一些方法来获取密码 - 如果有密码,它可能被滥用(例如密码被盗)。如果您绝对肯定地需要来执行此操作,请在将应用程序中的密码存储到数据库之前对其进行加密。这不会保护您免受所有威胁,但如果某人“仅”窃取您的数据库,至少密码将无法读取。
答案 5 :(得分:0)
其他人有正确的想法,但错过了重要的一步。您应该使用非对称加密并存储密码+ salt的公钥加密形式。
要验证密码,请使用提供的密码,将其与salt结合使用,使用公钥加密组合,并将其与存储的值进行比较。
要检索密码,请使用私钥(保持安全,即在另一台隔离的计算机上)解密密码+盐并丢弃盐。
缺点:非对称加密在计算上可能很昂贵,但密码往往很短。
你可以将它与上面的其他想法结合起来(也就是存储盐渍哈希),你应该填写密码,这样加密文本的长度不会泄漏密码长度。