11

我正在用 PHP 编写一组数据库驱动的应用程序。这些应用程序将以自己的用户身份在 Linux 服务器上运行。其他用户有时可能会在系统上,但具有非常受控制的访问权限。他们根本无法访问的其他服务器。我还将向需要编写 Perl 脚本的开发人员公开一个限制存储过程 API,这些脚本使用 DBI 和我编写的一组函数来访问数据库。

我的问题是保护其中包含连接字符串的配置文件的最佳方法是什么?

对文件具有 [4+]00 权限的其他用户是否足够?我应该加密它们吗?这似乎只是将问题转移到其他地方,所以我担心在哪里存储加密密钥。我意识到 Perl 开发人员需要有自己的连接字符串,因为他们只有执行数据库权限。

4

3 回答 3

8

如果机器真的以传统的 Unix 方式进行管理,其中 J. Random 用户不会一直使用 root,我会说文件系统权限是你最好的选择。如果有人获得未经授权的 root 访问权限,那么再多的愚蠢加密也不会“保护”连接字符串。

我会将带有连接字符串的文件标记为“脚本用户”拥有,并按照您的描述授予他们访问权限。

(在这个例子中,意识到加密连接字符串不会给你带来任何好处,真是太棒了。通过默默无闻的安全性会适得其反。)

于 2008-12-02T18:12:57.023 回答
2

这是一个免费 Apache 模块的链接,该模块有助于管理对密码存储的访问:

http://uranus.it.swin.edu.au/~jn/linux/php/passwords.htm

这对我来说似乎有点复杂,并且需要您在 mod_php 下运行 PHP。而且它仍然没有解决有权访问服务器的未经授权的人只能读取您的密码文件的可能性。

我认为您必须依赖文件权限,并相信未经授权的人无法sudo访问您的 PHP 应用程序 UID 或 root。

于 2008-12-02T18:21:00.220 回答
0

到目前为止,我最好的解决方案是将配置文件存储在加密分区中,这样可以直接访问机器的人无法通过将驱动器连接到另一台 PC 来获取密码,并且具有文件系统权限,因此人们无法读取来自操作系统本身的文件。

但是,您需要了解,对于直接访问机器的攻击者,您无能为力。如果它在运行数据库服务器本身,那么如果他可以修改数据库本身,那么保护配置文件不会有太大的影响。只要确保一切都尽可能安全,您可能会没事的。

于 2008-12-02T18:18:13.393 回答