PHP: 在 .ini 文件中存储敏感信息是好方法还是坏方法?

PHP: Storing sensitive informations inside .ini file is good or bad approach?

我对某些事情感到困惑,需要一些解释。

在我的实践中,我通常看到 90% 的 PHP 开发人员都将所有敏感信息(如数据库连接、FTP、SMTP 设置等)存储在一些变量、数组、对象或常量中。

我想知道现在最好使用 root 之外的一些 ini 文件并存储在那里吗?或者最好隐藏在某个地方的 .ini 文件并拒绝通过 .htaccess 访问?

一般来说,我想以最安全的方式保存敏感数据。

没有绝对安全的选择,但有些比其他的要好。

不要在您的项目源代码中保存敏感信息——您不希望您的密码和 API 密钥出现在 github 上。

将敏感信息保存在数据库中很好,但是您仍然需要在某个地方存储数据库凭据,而您又回到了起点。

您可以在环境变量中保存敏感信息。这些通常会在您的 Web 服务器的配置文件中设置。

只要满足以下条件,就可以将敏感信息保存在 ini 文件中:

  • 该文件具有所需的最低权限。
  • 该文件完全位于 Web 服务器的文档根目录之外,因此无法直接提供。不要将该文件放在您的主目录中,然后使用 .htaccess 拒绝访问它。
  • 该文件未提交给源代码管理。如果您使用 git,请编辑您的 .gitignore 以便忽略该文件。

这些也不用说了:

  • 用户帐户 运行 Web 服务器进程永远不应对其所服务的文件具有写入权限。
  • 计算机上的其他非特权用户运行 Web 服务器进程不应该对其所服务的文件具有读取权限。

对我来说,我建议将它存储在一个 点文件 这样的 .env(就像 Laravel 做的那样),或者 环境变量,或者 INI 文件(正如你上面所说的)只要它对世界是隐藏的,或者如果有人入侵你的服务器,他们将无法看到否则他们将无法访问它。