Play Framework 2.1密码加密

Play Framework 2.1 Password Encryption

我有一个与数据库对话的应用程序,我必须从我的 application.conf 加载数据库连接的凭据。我想要我的凭据,至少是在 application.conf 文件中加密的密码。我没能找到一些很好的文档来说明它如何与 Play 结合在一起。

我的意思是我可以使用任何加密库,加密密码,将其存储到 application.conf 并在连接到数据库时解密。我想知道的是关于它如何与 Play 框架相适应的一些建议。是否有一些内置插件或可用于加密的东西?

实际上,加密您的数据库凭据是没有用的。这样你就必须在某个地方存储一个密钥来解密凭证,这会导致完全相同的问题。 相反,您可以在生产服务器上存储一个 application-prod.conf,您可以在其中覆盖 application.conf 属性。确保只有用户 运行ning play 有权读取该文件。

include "application"

db.default.password="yoursecret"

那么运行你的申请:

/path/to/yourapp/bin/yourapp -Dconfig.file=/path/to/application-prod.conf

同样的方法用于保护应用程序的秘密。参见 https://www.playframework.com/documentation/2.4.x/ApplicationSecret and https://www.playframework.com/documentation/2.1.x/Configuration

您不需要加密您自己系统中的任何内容。只需确保您的服务器是安全的。

由于您需要让您的应用程序访问密码,因此有权访问您系统的攻击者无论如何都能够获取您的密码。

但是永远不会将您的密码检查到git(或颠覆或其他)!

相反你应该做的是:

  1. 将此行添加到您的 application.conf:

    include "secret.conf"
    
  2. 在您的 conf 文件夹中创建 secret.conf 并将您的所有凭据保存在此文件中。

  3. secret.conf 添加到您的 .gitignore,这样它就不会进入您的 Git。
  4. 在您的服务器上手动添加和更新 secret.conf 文件。

如果你在 Linux 系统上,控制对 secret.conf 文件的读取访问也很聪明,就像@Roman 说的:

Make sure only the user running play has rights to read that file.