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

PHP:在.ini文件中存储敏感信息是好方法还是坏方法?,php,security,ini,Php,Security,Ini,我有些困惑,需要一些解释 在我的实践中,我经常看到90%的PHP开发人员将所有敏感信息(如数据库连接、FTP、SMTP设置等)存储在一些变量、数组、对象或常量中 我想知道现在使用rootandstore中的ini文件更好吗?或者最好隐藏在某个地方.ini文件,并通过.htaccess进行denay访问 一般来说,我希望以最安全的方式保存这些敏感数据。没有完全安全的选择,但有些比其他更好 不要将敏感信息保存在项目的源代码中——您不希望在github上使用密码和API密钥 在数据库中保存敏感信息是可

我有些困惑,需要一些解释

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

我想知道现在使用rootandstore中的ini文件更好吗?或者最好隐藏在某个地方.ini文件,并通过.htaccess进行denay访问


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

没有完全安全的选择,但有些比其他更好

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

在数据库中保存敏感信息是可以的,但是您仍然需要在某个地方存储数据库凭据,现在您又回到了起点

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

在ini文件中保存敏感信息可以,前提是:

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

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

对我来说,我建议将其存储在一个点文件中,如.env(如Laravel所做的),或环境变量,或INI文件(如你上面所说),只要它是隐藏的,或者如果有人入侵你的服务器,他们将无法轻松查看或访问它。

“他们将无法轻松查看”与“他们将无法查看”完全不同。“轻松”的定义也可以根据你的黑客能力而有所不同。点文件不会隐藏任何东西,并且提供完全零先天保护。我同意你+亚历克斯的观点,它不会隐藏。很抱歉没有详细说明,但我的意思是-它不应该像用户访问url“”那样公开,它不应该显示信息。+ADyson-关于“轻松”的定义,你是对的。如果你是一个非常好的黑客,这对你来说非常容易。我没有足够的黑客知识。我知道一些基本的东西,比如SQL注入、XSS等等。。。(但非常基本的黑客行为)但我知道的是,如果有人入侵你的服务器,你应该考虑它会造成多大的损失。对于他们来说,获得这些敏感信息是多么容易,如果他们每个人都能获得这些敏感信息,那么他们将付出多大的代价。想象一下,如果将其存储在config.php文件中。这对他们来说将非常容易。无论如何,正如我上面所建议的——“只要它是隐藏的(不太容易找到),或者如果他们访问服务器(希望他们不能轻松访问/查看文件)”。仅供参考,我同意上面的+Alex答案,这是完美的,我的答案就像是一个附加的或(非常)简短的版本。