何处将敏感信息存储在Drupal模块中?

时间:2011-01-21 16:37:37

标签: php security drupal drupal-7

在我正在创建的模块中,我需要安全存储一些敏感信息:远程数据库主机,用户名和密码。

似乎唯一可用的存储位于Drupal数据库中,这让我很担心,因为这意味着如果Drupal受到了损害,那么这个其他数据库也是如此。 settings.php中的sites/all/default文件是我的第二个选项,但我无法写入它。 FTP和SSH到777和666的各种chmod命令不会打开要写入的文件。我也不确定我在那里设置的变量是否可用。

有没有其他方法可以安全地存储这些信息?

3 个答案:

答案 0 :(得分:3)

嗯......这似乎是你不应该做的事情。编写一个位于您可以访问的远程数据库的API。

但是,如果您坚持直接访问数据库。硬编码文件中的主机,用户名和密码,将文件放在文档根目录之外并从那里包含它。例如,如果您的文档根目录(即Drupal的index.php文件所在的位置)是/ www / htdocs,请将包含该信息的文件放在/ www / secure之类的地方,并将其包含在您需要的位置。然后,如果php由于某种原因停止工作,该文件不在外部世界的可读位置,但PHP可以根据需要将其包含在站点内。

当然有人可能会看到你包含该文件,但他们无法看到文件本身,除非他们攻击你的服务器(而不仅仅是Drupal),在那种情况下,无论如何你几乎搞砸了。

答案 1 :(得分:3)

你使用settings.php走在正确的轨道上。您可以use the $conf variable in settings.php使用variable_get设置可以在模块中访问的变量。

答案 2 :(得分:0)

使用配置文件非常适合此类信息。然而,做一个chmod 777或666是一个非常糟糕的想法。问题是这两个设置都允许文件GLOBALLY读/写。因此,如果您在共享主机上,则系统上的其他用户可以访问您的文件。在安装时尝试使用php的chmod()函数在文件上执行chmod 500。 (500应该适用于大多数情况,最重要的部分是最后一个数字为零)。