在MariaDB/PHP服务器上为mysqli_connect()使用用户名/密码是否有安全好处?

在MariaDB/PHP服务器上为mysqli_connect()使用用户名/密码是否有安全好处?,php,mysql,mysqli,mariadb,Php,Mysql,Mysqli,Mariadb,我很难想出MariaDB/PHP web应用程序需要密码的好处,因为密码总是以明文形式存储在某处 不管它是在mysqli_connect()调用中硬编码的,还是从ENV文件或环境变量或其他位置提供给mysqli_connect(),拥有密码似乎没有任何安全好处,因为如果web服务器可以读取密码,那么任何可以在web树中植入代码的人都可以读取密码 似乎最好将帐户设置为允许本地主机进行无密码登录,然后将MariaDB帐户限制为服务器的IP地址 有没有人想出更安全的办法 有什么想法吗?如果有人能够访问

我很难想出MariaDB/PHP web应用程序需要密码的好处,因为密码总是以明文形式存储在某处

不管它是在mysqli_connect()调用中硬编码的,还是从ENV文件或环境变量或其他位置提供给mysqli_connect(),拥有密码似乎没有任何安全好处,因为如果web服务器可以读取密码,那么任何可以在web树中植入代码的人都可以读取密码

似乎最好将帐户设置为允许本地主机进行无密码登录,然后将MariaDB帐户限制为服务器的IP地址

有没有人想出更安全的办法


有什么想法吗?

如果有人能够访问您的Web服务器上的文件,那么除了泄漏的MySQL密码之外,您还需要担心更重要的问题

数据库密码不应在应用程序中硬编码。使用版本控制软件时,您不能对硬编码密码保密。如果您的开发和生产软件是硬编码的,则不能有单独的凭据数据库凭据应存储在环境变量中。

应始终使用密码保护直接数据库访问,以避免未经授权方意外访问。想象一下,如果有人在您的生产服务器上设置了端口转发或安装了phpMyAdmin,并且该服务器具有不受限制的访问权限,将会发生什么情况。通过使用特权系统,您可以限制谁有权访问您的数据库

当运行多个可以访问独立逻辑数据库的应用程序时,可以限制哪个应用程序可以访问哪个数据库。这样,当一个应用程序被黑客攻击或出现严重故障时,您可以将损害降至最低。如果多个租户使用同一台服务器,您可以通过向每个租户提供单独的凭据来保证其数据的隐私


密码以明文形式存储这一事实并不重要。这些凭据只应存储并在该服务器上使用。如果有人获得该密码的访问权限,则表示他们已经可以访问您的服务器。此时,安全哈希不会保护任何内容。这些密码通常是长而唯一的字符串,不能在其他任何地方重复使用。

本地主机上的其他应用程序现在可以在没有密码的情况下与您的数据库交互吗?如果密码存储在ENV中,或者权限配置正确的文件中,这不是更困难吗?我不明白这种逻辑。完全如何“设置帐户以允许无密码登录”比拥有密码要好得多。看起来只是抽象的沉思。如果您愿意,其“好处”在于使用标准的通用机制,而无需设计花哨的方案。无密码可能意味着unix套接字身份验证插件要求unix用户匹配mysql/mariadb,它将身份验证替换为unix用户的身份验证,而不是已知IP上的已知字符串。所以不是抽象的,非常具体的和虚构的,不是所有场景中的好或坏,而是不同的。确实需要考虑场景的风险/收益,但是没有解决方案是特别健壮和容错的。@ LNE:它是一个专用的主机,没有人类用户,也没有无关的应用程序。@您的常识:唯一的“更好”部分是不需要存储或召回或维护密码。“没有密码”不是一个“花哨的计划”,事实上恰恰相反。不存在的数据不需要维护。因为他们可以访问服务器,所以他们也可以访问web应用程序使用的DB登录名/密码。这似乎并不比没有密码更安全。