【问题标题】:PHP: How to hide the password for database connection/email connection statement?PHP:如何隐藏数据库连接/电子邮件连接语句的密码?
【发布时间】:2011-04-14 13:48:13
【问题描述】:

我有一个用 PHP 开发的网站。有 2 个类(在 2 个单独的 php 文件中)包含站点管理员的 gmail 用户 ID 和密码(纯文本)和数据库密码(同样是纯文本)。尽管这些类都没有显示在浏览器上(如 index.php)。这些文件只包含 php 类而不包含 html 代码,并且对那些纯文本密码的引用仅通过这些类的对象。 迟到了,我开始怀疑这是否足够安全?我已经尽力(作为一个恶意的人)尝试阅读这两个所说的 php 文件的内容,但无法这样做。我不太熟悉开发安全代码,所以不确定我应该采取什么方法来确保这些密码永远不会被泄露。 任何人都可以建议最佳实践来开发可以安全地包含此类敏感信息的 php 代码。

【问题讨论】:

    标签: php database security passwords


    【解决方案1】:
    1. 不要将密码存储在文件中,因为最终会有人将该文件检入源代码控制中。或者有人会错误地设置权限。

    2. 使用自己的操作系统用户帐户运行应用程序

    3. 将密码放入应用程序用户的操作系统环境变量中(不是系统环境变量)

    【讨论】:

      【解决方案2】:

      首先,如果可能的话,我会考虑使用OAuth for accessing GMail - 这意味着您根本不必存储凭据,并提供一定程度的保护,以防您的服务器受到威胁。

      我还会查看this question 的答案。

      最后,如果您的网站位于公共互联网上,那么至少有必要阅读一下互联网安全的基础知识,尤其是保护 Web 应用程序的安全。事情可能会出错的方式有很多种。我喜欢“黑客暴露”的书。

      【讨论】:

        【解决方案3】:
        • 将可配置项放在一个单独的配置文件中,位于您的公共 Web 目录上方
        • 确保您为文件设置了正确的文件权限
        • 检查您的 Web 应用程序是否包含本地(和远程)文件
        • 让您的服务器保持最新状态

        将密码放在安全的地方并不是完整的解决方案,您需要确保完整的 PHP 应用程序安全,并且未经授权的任何人都不能获得对服务器的 root/管理员访问权限。

        【讨论】:

        • 您也可以在使用后unset()敏感信息,以防止它从被遗忘的var_dump()中意外泄漏。
        • +1,除非您有 RFI/LRI 及其 PHP 文件,否则它将再次执行,而不是打印。另一方面,可以使用 mysql FILE 权限或更通用的目录遍历来读取它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-29
        • 1970-01-01
        • 1970-01-01
        • 2014-07-03
        • 2016-08-31
        • 2020-05-13
        • 1970-01-01
        相关资源
        最近更新 更多