在php文件中存储密钥


Storing secret keys in php files

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

我一直无法下载文件来查看内容,但难道不可能使用数据包嗅探器或其他东西来读取密钥并传递短语吗?

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

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

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

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

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

否。这是不可能的,因为在将内容传递到客户端之前,脚本仅在服务器端运行。

唯一可能的漏洞是有人侵入服务器本身,并从文件系统中窃取文件。

除了上述建议(将您的配置存储在网站的公共目录之外),加密密码/机密而不是将其以纯文本形式存储在任何地方(尤其是当使用非php文件存储密码(如.env*.yml等)是一种很好的技术,提交到Github等

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