【问题标题】:Best way to save encrypt/decrypt key?保存加密/解密密钥的最佳方法?
【发布时间】:2012-05-31 05:04:39
【问题描述】:

我正在开发一个 wordpress 插件。 在该插件中,用户需要输入一些重要的登录详细信息,我将在 cron-job 中使用。

我当然喜欢加密密码,并发现了这个有用的东西: Best way to use PHP to encrypt and decrypt passwords?

但是,我应该如何保存密钥? 我无法将其保存在文件中,因为当用户更新插件时所有文件都将被替换。 并将其保存在数据库中,好吧 - 我猜这不太聪明。

有什么建议吗?

【问题讨论】:

  • 为什么你认为保存在数据库中不聪明?
  • 我猜您首先要加密密码的原因是为了防止有人访问您的数据库时滥用。因此,将密钥保存在数据库中会使其一文不值,因为有人可以获取密钥并解密。还是我错了?
  • 为什么不对密码进行哈希处理?有什么特别的原因吗?
  • 我也想要(见我第一篇文章中的链接),但我仍然需要一个密钥来散列它(和取消散列),对吧?我应该把那个密钥保存在哪里?
  • @nhahtdh 如果他需要使用密码来访问其他系统,散列可能不是一个好主意(因为散列通常只能以一种方式工作)。

标签: php encryption


【解决方案1】:

如果您加密,您仍然需要将加密密钥存储在同一台机器上 - 只有代码混淆才能减慢攻击的发生。

在最好的情况下,只有您的数据库容易受到攻击,在这种情况下,将加密的密码存储在数据库中并将密钥存储在文件系统中并不是一个糟糕的解决方案。

最坏的情况是系统被彻底破坏。在这种情况下,如果您必须将密钥存储在显而易见的地方,那么再多的加密也无法挽救您。混淆可能会使事情复杂化,给所有者足够的时间来保护帐户。

【讨论】:

  • 这就是我一直在想的。将加密的详细信息保存到数据库中,并将密钥保存在单独的文件中。但问题是;当用户更新插件时,所有文件都将被新的文件替换,这也是他的密钥。 Blaaa....真令人沮丧:(
  • 我对 Wordpress 不太熟悉,但是没有可以放置配置文件的目录吗?
  • 如果没有,也许您可​​以在插件的安装过程中进行该部分 - 生成密钥。
【解决方案2】:

如果您将密钥保存在数据库表中,我认为它会更好。关于securing the database and making sure that the data in the table will only be accessible by the authorized person的部分,你可以创建第二个用户,具有访问和读取这些重要表格的权限。

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

【讨论】:

  • 我做不到,我不拥有运行插件的网站。
猜你喜欢
  • 2021-12-17
  • 2011-10-10
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
相关资源
最近更新 更多