如何最佳保存加密/解密密钥?

3
我正在开发一个WordPress插件。 在该插件中,用户需要输入一些重要的登录详细信息,我将在cron-job中使用这些信息。 我当然希望加密密码,并找到了这个有用的东西: 如何使用PHP加密和解密密码的最佳方法? 然而,我应该如何保存密钥? 我不能将其保存在文件中,因为用户更新插件时所有文件都会被替换。 将其保存在数据库中,嗯,那不是特别明智的做法。 有什么建议吗?

2
你为什么认为将数据保存在数据库中不明智? - Ozair Kafray
1
我猜你想要加密密码的原因是为了防止如果有人获取了你的数据库,就可以避免被滥用。所以将密钥保存在数据库中会使其变得毫无价值,因为有人可以获取密钥并进行解密。或者我错了吗? - Kenneth Poulsen
为什么不对密码进行哈希处理?有什么特别的原因吗? - nhahtdh
我想要(在我的第一篇帖子中看到链接),但我仍然需要一个哈希它(和反哈希)的密钥,对吗?我应该把那个密钥保存在哪里? - Kenneth Poulsen
如果他需要使用密码来访问其他系统,哈希它可能不是一个好主意(因为哈希通常只能单向工作)。 - Fredrik
显示剩余6条评论
2个回答

2
如果您进行加密,仍然需要在同一台机器上存储加密密钥-只有代码混淆可以减缓攻击的发生速度。在最好的情况下,只有您的数据库容易受到攻击,在这种情况下,在数据库中存储加密密码并将密钥存储在文件系统中不是一个糟糕的解决方案。最坏的情况是,系统彻底被攻破,在这种情况下,如果必须公开存储密钥,则无论加密多少都无法拯救您。混淆可能会使事情复杂化,为所有者提供足够的时间来保护帐户。

这正是我一直在思考的问题,将加密细节保存到数据库中,并将密钥保存在单独的文件中。但问题在于,当用户更新插件时,所有文件都会被替换为新的文件,包括他的密钥。真是太令人沮丧了:( - Kenneth Poulsen
我对WordPress不是很熟悉,但是难道不是有一个目录可以放置配置文件吗? - Nick Caballero
如果不行的话,也许你可以将其作为插件安装过程的一部分 - 生成一个密钥。 - Nick Caballero

1

我认为最好将密钥保存在数据库表中。关于“保护数据库并确保表中的数据只能被授权人员访问”的部分,您可以创建第二个用户,赋予其访问和读取此类重要表格的权限。

因此,请创建一个单独的用户,该用户将有权访问表格及其内容。现在,在需要访问加密密钥和其他重要信息时,请使用不同的用户使用网站,并切换到管理员数据库用户。


我做不到,因为我不拥有运行插件的网站。 - Kenneth Poulsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接