【问题标题】:Storing secret keys in php files将密钥存储在 php 文件中
【发布时间】:2012-02-17 08:15:24
【问题描述】:

我在我的 php 应用程序中使用亚马逊网络服务。将秘密 aws 访问令牌存储在链接到我的 php Web 服务的 config.php 文件中是否安全?

我一直无法下载文件来查看内容,但是否可以使用数据包嗅探器或其他工具来读取密钥和密码?

我知道亚马逊建议使用令牌自动售货机来创建临时凭证,而不是直接使用 aws 凭证,但我们希望能够跳过实施。

【问题讨论】:

    标签: php security amazon-web-services amazon


    【解决方案1】:

    就“下载 PHP 文件”而言,Apache 会阻止这种情况的发生,但您绝对应该将 PHP 文件存储在文档根目录之外,这样一来网络就无法访问它(并且 require()如果需要,它在服务器端)。

    就“数据包嗅探”而言,安全连接可以防止这种情况发生。只需确保您使用的是 HTTPS。

    【讨论】:

      【解决方案2】:

      除非您的 config.php 文件在运行时会输出令牌,否则您应该是安全的。为了采取额外的预防措施,您可以将 config.php 文件放在您网站的根目录下,这样用户甚至无法尝试运行该文件。

      您的 php 正在服务器上执行,只要没有输出发送到包含令牌的客户端,该文件的内容就永远不会发送到客户端。因此,他们将无法读取文件,因为内容永远不会离开服务器,只是运行脚本的输出。

      【讨论】:

        【解决方案3】:

        没有。这是不可能的,因为在将内容交付给客户端之前,脚本仅在服务器端运行。

        唯一可能的破坏是如果有人侵入服务器本身并从文件系统中窃取文件。

        【讨论】:

        • 大多数成功的攻击都发生在服务器上。
        【解决方案4】:

        除了上述建议(将您的配置存储在网站的公共目录之外)之外,加密您的密码/秘密而不是将它们作为纯文本存储在任何地方(尤其是在使用非 php 文件存储密码时)是一种很好的技术例如.env*.yml 等)。通过错误配置网络服务器、提交到 Github 等,很容易暴露易受攻击的数据。

        更多阅读:https://blog.fortrabbit.com/how-to-keep-a-secret

        【讨论】:

        • 您会将加密密钥安全地保存在哪里?
        • @zaph 不可能绝对安全地存储加密密钥,因为它存储在同一个代码库中(显然不在同一个配置文件中)。这种技术更多的是混淆而不是真正的加密,但正如我所说,可以防止在服务器配置错误等情况下轻易暴露秘密。
        猜你喜欢
        • 2018-08-10
        • 2021-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多