【问题标题】:PHP: Storing sensitive informations inside .ini file is good or bad approach?PHP:在 .ini 文件中存储敏感信息是好方法还是坏方法?
【发布时间】:2017-11-02 14:08:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php security ini


    【解决方案1】:

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

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

    在数据库中保存敏感信息很好,但是您仍然需要在某个地方存储数据库凭据,并且您又回到了开始的位置。

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

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

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

    这些也不言而喻:

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

    【讨论】:

      【解决方案2】:

      对我来说,我建议将它存储在 dot 文件 中,例如 .env(就像 Laravel 所做的那样),或 环境变量,或 INI 文件(如您上面所说)只要它对世界隐藏或有人入侵您的服务器,他们就无法轻易看到它或无法访问它。 p>

      【讨论】:

      • “他们将无法轻易看到”与“他们将无法看到”绝对相同。 “容易”的定义也可能会根据您的黑客水平而有所不同。
      • 点文件不会被任何东西隐藏,并且提供完全零的先天保护。
      • 我同意你+Alex的观点,它没有被隐藏。很抱歉没有详细说明,但我的意思是 - 它不应该像用户访问网址“example.com/.env”那样公开,它不应该显示信息。
      • +ADyson - 你对“容易”的定义是正确的。如果你是一个非常优秀的黑客,这对你来说非常容易。我没有足够的关于黑客的知识。我知道一些基本的东西,比如 SQL 注入、XSS 等等......(但非常基本的黑客攻击)但我知道的是,如果有人入侵了你的服务器,你应该考虑一下它会造成的损失。他们获得这些敏感信息的难易程度,如果他们每个人都获得这些敏感信息所付出的代价。想象一下,如果您将它存储在 config.php 文件中。这对他们来说非常容易。
      • 无论如何,正如我上面建议的那样 - “只要它是隐藏的(不是很容易找到),或者如果他们访问服务器(希望他们将无法访问/轻松查看文件)”。仅供参考,我同意上面的 +Alex 回答,它很完美,我的版本就像一个额外的或(非常)简短的版本。
      猜你喜欢
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2012-06-19
      • 2012-01-02
      • 2022-01-17
      相关资源
      最近更新 更多