4

场景:用 PHP 编写的 Web 应用程序使用Amazon Web 服务,并且必须随身携带访问密钥 ID 和秘密访问密钥才能正常运行。是否有安全存储这些数据的最新建议和/或 API?

我的想法是根据本地服务器变量创建的密钥将其对称加密到文件中。这样一来,如果有人通过 FTP 获取文件的副本、丢失带有文件复制的笔记本电脑等,那将是 [希望] 胡言乱语。我担心的是,熟练的攻击者可以上传他们自己的脚本来解密它。

这似乎是一种常见的情况,而且我从未获得过舒适的解决方案。显然我不能使用单向哈希,因为我需要原始数据来创建 HMAC 以发送到 AWS。非常欢迎提供相关 SO 问题的链接。

4

3 回答 3

1

啊。安全问题。

我认为您应该在这里问的问题是您如何处理,例如您的 php 配置文件中的 mySQL 密码?

坦率地说,如果有人设法获得了您的文件副本,那么您的安全性无论如何都需要重新考虑。对于我自己的使用,我通常只将密码保存在一个地方,(在应该使用它们的服务器上)并确保我每次都使用随机生成的密码(将其粘贴到配置文件中,瞧!)

老实说,如果不是您自己的主机,任何敏感数据都可能受到损害。

如果它是您自己的主机,我建议在 Linux 和PHPSuExec中使用适当的权限,以确保只有您编写的脚本才能访问这些文件。

无论如何,要回答您最初的问题,您的 AWS 访问/密钥与 MySQL 密码相同,好吧,它有可能让某人访问您的服务,但它不会让他们访问您的个人详细信息。即使使用对称加密,如果您的脚本存在安全漏洞,也可以访问信息。

简而言之,当您将这些密钥放在除您以外的任何人都可以访问的任何地方时,您会承担风险。您对 Am​​azon 的服务器不会受到威胁的信任程度如何?

我的建议是尝试尽可能多地增加安全性,但请注意您的帐户,我通常会运行一个 cron 作业向我发送一封电子邮件,其中包含对我的 S3 帐户的更改(上传的新文件、新存储桶等等),从中我可以知道发生了什么。

没有简单的解决方案,它是保护系统每个单独层的组合。我的意思是,如果您使用对称加密,那么密码必须存储在某个地方,对吗?还是你要每次都输入?

希望这可以帮助

于 2008-12-06T23:26:56.713 回答
0

我的想法是根据本地服务器变量创建的密钥将其对称加密到文件中。这样,如果有人通过 FTP 获取文件的副本,丢失带有复制文件的笔记本电脑等,这 [希望] 是胡言乱语。我担心的是,熟练的攻击者可以上传他们自己的脚本来解密它

这不会有什么坏处,但最终它只是通过默默无闻的安全性,因为可以读取文件的人可能也可以读取和反向工程您的代码。每次服务器启动时都没有输入密码或以其他方式提供秘密,加密将无济于事。它只是将问题转移到您将如何保护加密密钥(也需要服务器可以访问)?

您必须强化和设计您的应用程序和服务器(不要忘记操作系统,以及对操作系统的远程访问),以便未经授权的人首先无法读取系统上的文件。

如果您担心有人可以物理访问盒子,请专注于物理安全以阻止这种情况发生。

于 2008-12-17T01:15:02.063 回答
0

我按照您的建议使用对称加密。当我启动我的服务器时,我需要给它一个密钥来解密包含身份验证数据的文件。

当然,黑客可以进行内存转储并以这种方式读取密码,但这比读取明文文件要困难得多。没有完美的解决方案,安全性始终是风险和易用性之间的折衷。

So server security is still the key issue, its just a question of how much security is enough. I'd suggest looking at Bastille Linux or something like that to harden your server but that's another topic altogether.

于 2008-12-24T03:25:00.157 回答