4

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

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

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

4

3 回答 3

3

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

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

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

于 2011-01-21T16:44:34.007 回答
3

使用 settings.php,您走在了正确的轨道上。您可以使用 settings.php 中的 $conf 变量来设置您可以使用 variable_get 在模块中访问的变量

于 2011-01-21T16:45:50.467 回答
0

使用配置文件是此类信息的理想选择。但是,执行 chmod 777 或 666 是一个非常糟糕的主意。问题是这两个设置都允许文件全局读/写。因此,如果您在共享主机上,那么系统上的其他用户可能会访问您的文件。在安装时尝试使用 php 的 chmod() 函数对文件执行 chmod 500。(500 在大多数情况下应该可以工作,最重要的部分是最后一个数字为零)。

于 2011-01-21T16:51:28.560 回答