我有一个与数据库通信的应用程序,我必须从application.conf
加载数据库连接的凭据。我想要我的凭证,至少是在application.conf
文件中加密的密码。我无法找到一些关于如何将其与Play结合在一起的优秀文档。
我的意思是我可以使用任何加密库,加密密码,将其存储到application.conf
并在连接到数据库时解密。我想知道的是关于这如何适合Play框架的一些建议。有一些内置插件或我可以用来加密的东西吗?
您不需要对自己系统中的任何内容进行加密。只要确保你的服务器是安全的。
由于您需要让您的应用程序访问密码,因此可以访问您的系统的攻击者无论如何都可以获得您的密码。
但是永远不要检查你的密码到git(或subversion或其他)!
你应该这样做:
-
将这行添加到您的
application.conf
:include "secret.conf"
-
在
conf
-文件夹中创建secret.conf
,并将所有凭据保存在此文件中。 - 将
secret.conf
添加到您的.gitignore
中,这样它就不会进入您的Git。 - 手动添加并更新服务器上的
secret.conf
-文件
如果你是在linux系统上,控制对secret.conf
文件的读访问也是明智的,就像@Roman说的:
确保只有运行play的用户才有权限读取该文件
实际上加密您的db凭据是没有用的。这样,您必须在某个地方存储一个密钥来解密凭证,这将导致完全相同的问题。相反,您可以在生产服务器上存储application-prod.conf
,以便覆盖application.conf
属性。确保只有运行play的用户才有权限读取该文件。
include "application"
db.default.password="yoursecret"
然后运行应用程序:
/path/to/yourapp/bin/yourapp -Dconfig.file=/path/to/application-prod.conf
同样的方法用于保护应用程序的秘密。