【问题标题】:What's best way to secure a database connection string?保护数据库连接字符串的最佳方法是什么?
【发布时间】:2010-09-24 23:42:45
【问题描述】:

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

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

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

【问题讨论】:

  • 这是命令行应用还是网络应用?
  • 我认为在超过 99% 的情况下假设 PHP == Web 应用程序是安全的。
  • 这是一个合法的问题。系统的某些部分实际上使用 CLI。

标签: php database linux security connection-string


【解决方案1】:

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

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

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

【讨论】:

  • 很好地肯定了我的想法。我根本不会使用 sudo。安全有时让我发疯,因为它不可能完美。
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 2013-05-26
      • 2014-03-19
      • 2020-09-26
      • 2023-04-01
      • 1970-01-01
      • 2021-04-10
      相关资源
      最近更新 更多