How to encrypt config file in a Perl Dancer application?
我在我的舞者应用程序的配置文件中有一些敏感信息(我的数据库用户名/密码和cookie加密密钥),如果有人可以访问,我宁愿不显示为纯文本。最好的加密方法是什么,这样文件就不只是文本了?或者有没有比加密更安全的方法(比如限制文件权限)?
- 欢迎使用StackOverflow。""什么是最好的方式"类型的问题可能会被标记为基于意见的问题并关闭。请阅读"我该怎么问一个好问题?"还有"我在这里可以问什么主题?".
- 加密配置文件是没用的,因为你的舞者应用需要加密密钥来访问数据库;如果你的应用被破坏了,攻击者将有权访问该密钥,所以这与根本不加密没有什么不同。
- 一个更强大的安全模型是有三个独立的服务器:一个用于Web服务器,一个用于应用程序,一个用于数据库。这样,如果您的Web服务器受到攻击,攻击者就无法访问数据库。不过,我不确定舞蹈演员是否可以在这样的建筑中工作(也不确定它是否对微观框架有意义)。
- 同上,加密配置文件。如果您试图在生产环境中保护用户名/密码信息,一种常见的方法是在操作系统级别将这些设置为环境变量。这将使您的生产凭证远离Git存储库。
因为您不能加密配置,如上面的注释所示,@thissuiteisblacknot,但是有些人很好地隐藏密码(例如,隐藏一些不知道Perl但可以访问配置文件的同事的密码)。
我用的是
在我的配置文件中,密码是加密的,看起来像是配置说明。如果有人只抓取/读取配置文件-没有可用的。
通常我会用下一个:
1
| db.password: enter some safe password here such De4w.Quafy3yq |
在代码I中引用了"de4w.quafy3yq"部分,使用了rot13或crypt等。获得真正的密码:"qr4j.dhnsl3ld"。或者使用字符串的mh5散列作为密码,或者类似的简单算法。
它很简单,对非程序员也很有效——当然,当有人了解Perl并获取代码时,它也没有帮助。
编辑
因为看起来(投反对票)比这里还有些人不明白这意味着什么,这不是真正的安全。这是一个很好(有趣)的方法(当然是不安全的-再次读取,这并不意味着任何真正的安全性)如何隐藏来自不了解Perl的同事的密码。不要将它用于任何真正的密码保护。天啊。。。
- 如果您只是对已经有权访问服务器的用户隐藏凭据,另一个选项(如果您的数据库系统支持)将是使用存储在文件中的凭据进行连接(使用MySQL的选项文件、使用Postgres的.pgpass等),您可以对其设置限制权限。这样,即使其他用户有权访问Dancer配置文件,他们也无法访问连接凭据。
- 实际上,我并不与那些担心看到密码的人共享服务器(这是我自己的vps),我更关注的是很少有人碰巧入侵或访问服务器的情况。
- @buuntu安全性是一个脆弱的东西——我不喜欢推荐,因为每个服务器都有自己的细节。也许有一件事——所有(我自己的)服务器都在单独的监狱中的BSD上运行,DB服务器也单独在一个监狱中运行。到数据库服务器只允许从监狱连接,密码是明文…但正如我所说的-每个应用程序,每个服务器都有自己的需求,我没有足够的勇气推荐任何东西…;)