我正在用PHP编写一组数据库驱动的应用程序。这些应用程序将作为自己的用户在Linux服务器上运行。其他用户有时可能会在系统上,但具有非常可控的访问权限。他们根本无法访问的其他服务器。我还将向需要使用DBI和我编写的一组函数编写访问数据库的Perl脚本的开发人员公开限制存储过程API。
我的问题是保护包含连接字符串的配置文件的最佳方法是什么?
对文件有[4+] 00以上权限的其他用户是否足够?我应该加密它们吗?这似乎只是将问题转移到其他地方,以便我担心存储加密密钥的位置。我意识到Perl开发人员需要拥有自己的连接字符串,因为它们只具有执行数据库权限。
答案 0 :(得分:7)
如果机器真的是以传统的Unix方式进行管理,那么J.随机用户并没有一直关注root,我会说文件系统权限是你最好的选择。如果有人获得了未经授权的root访问权限,则无法通过加密愚蠢来“保护”连接字符串。
我将连接字符串标记为“脚本用户”所拥有的文件,并按照您的描述为其提供访问权限。
(在这个例子中,Bravo意识到加密连接字符串不会给你带来任何东西。通过默默无闻的安全性会适得其反。)
答案 1 :(得分:2)
这是一个免费Apache模块的链接,有助于管理对密码存储的访问:
http://uranus.it.swin.edu.au/~jn/linux/php/passwords.htm
对我来说似乎有点精心要求,并要求你在mod_php下运行PHP。并且它仍然没有解决有权访问服务器的未授权人员只能读取您的密码文件的可能性。
我认为您必须依赖文件权限,并相信未经授权的人员无法sudo
到您的PHP应用程序UID或root。
答案 2 :(得分:0)
到目前为止,我的最佳解决方案是将配置文件存储在加密分区中,以便直接访问计算机的人无法通过将驱动器连接到另一台PC来关闭密码,并且具有文件系统权限,以便人们可以从操作系统本身读取文件。
但是,您需要了解,对于可直接访问计算机的攻击者,您无法做多少事情。如果它正在运行数据库服务器本身,那么如果他可以修改数据库本身,那么保护配置文件不会有太大影响。只要确保一切尽可能安全,你就可以了。