在 php.ini 文件中保存 MySQL 用户名/密码是不是安全? [复制]

Posted

技术标签:

【中文标题】在 php.ini 文件中保存 MySQL 用户名/密码是不是安全? [复制]【英文标题】:Is saving MySQL username/password in the php.ini file secure? [duplicate]在 php.ini 文件中保存 MySQL 用户名/密码是否安全? [复制] 【发布时间】:2011-12-14 03:38:25 【问题描述】:

我想知道将用户名、密码、服务器等保存在 php.ini 文件中是否安全,这样当我连接到 mysql 服务器时,我不必总是输入参数?

此外,是否可以通过任何类型的方法(如 phpinfo() 或类似的方法)查看或检索此信息(保存在 php.ini 中)?

【问题讨论】:

【参考方案1】:

如上所述,.ini 文件可能不会比将其存储在 .php 文件本身更安全。但是,需要考虑的一件事是,在使用 .ini 文件时,此设置实际上对所有 PHP 代码和网站都是全局的。使用 .ini 文件可能会影响您希望使用其他用户的其他代码。

总的来说,最好的安全做法是不使用 .ini 文件来存储密码,因为它现在对任何在您的服务器上存储 PHP 文件的人开放。如果您突然需要为一个站点的多个站点或应用程序提供不同的登录名(对于单独的数据库),这也会带来一些麻烦。最好不要对多个数据库使用一个登录名,root 用户除外,该用户只能用于管理目的。

【讨论】:

【参考方案2】:

只要您确保 ini 文件位于 DOCUMENT_ROOT 之外并且不可读,它的安全性不亚于任何其他方法。

【讨论】:

+1 建议将文件保留在 docroot 之外。这确实通过其他常见漏洞减少了攻击面。【参考方案3】:

我不认为将任何配置保存在 php.ini 文件中存在安全风险,因为 ini 文件的位置在“公共”目录之外。没有用户可以访问此文件。

您可以使用 "ini_get" php 函数获取 ini 参数。您可以从此处找到有关此参数的更多信息: http://php.net/manual/en/function.ini-get.php

【讨论】:

【参考方案4】:

如果您将它放在一个没有扩展名的文件中,然后使用 .htaccess 保护该文件,它会更加安全。此外,任何浏览器都可以读取 .ini 文件,因此非常不安全。

【讨论】:

【参考方案5】:

不安全,因为可以用php方法读取ini文件:parse_ini_file

【讨论】:

我认为这是一个无效的论点。如果您希望能够通过 PHP 读取用户/密码以建立连接,那么您用于存储用户/密码的 任何 方法都必须能够被 PHP 读取... “他问是否可以通过任何方法检索该信息”但这是总是正确的。即,通过相同的逻辑,将用户/密码保存在 db 类的私有属性中的字符串中是不安全的,因为我可以使用 print_r($db) 看到它。 “他们永远不会让你弄乱他们的 ini 文件”——听起来你假设他想把用户/通行证放在全局 php.ini 中。那没有必要。您可以制作自己的本地ini文件来存储本地设置,并且不亚于将设置放入PHP源代码中。 是的,好的——我重新阅读了这个问题,我认为你是对的。第一次阅读时,我以为他的意思是本地ini文件。因此,澄清一下:除非是没有其他用户的私有服务器,否则将 user/pass 放入全局 ini == bad,将 user/pass 放入本地 ini == 不会比任何其他方法差。【参考方案6】:

您不必每次都将该信息放入参数中。您可以在单独的文件 (dbconnection.php) 中定义连接,并将其包含在需要数据库连接的文件中。

【讨论】:

以上是关于在 php.ini 文件中保存 MySQL 用户名/密码是不是安全? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何开启PDO,PDO_MYSQL扩展

敏感文件整理

windows下testlink环境搭建

无法保存 php.ini

我需要在文件“/etc/php5/apache2/php.ini”中更改哪些内容以显示错误、警告、异常?我应该如何保存我所做的更改?

php扩展开发-INI配置