如何保护在php / mysql中制作的哈希密钥和Web应用程序

How to secure hash key and web app made in php/mysql

提问人:ThomasTe 提问时间:6/3/2023 更新时间:6/5/2023 访问量:42

问:

我正在考虑在 php 和 MySQL 中创建一个 Web 应用程序。 这个应用程序将管理和存储(在MySQL中)敏感的个人信息,所以我有点担心安全性。 我正在考虑在将信息存储在数据库中之前使用php自己的openssl_encrypt()对信息进行加密。 然后,挑战在于在哪里保存密钥。 我正在考虑将密钥存储在存储在public_html以外的其他目录中的文件中,例如父文件夹。 对于这样的解决方案来说,这是否足够安全,存储敏感的个人信息? 例如,如果我在Siteground上托管了这个文件,那么他们的支持人员将可以访问此文件怎么办?

谢谢。

PHP 安全 Web 应用程序 密码

评论

0赞 Chris Haas 6/4/2023
“足够安全”——不幸的是,这是非常主观的。你在存储什么(实际上不要在这里回答)?我的宠物叫什么名字?我的名字?我的 SSN?我的病历?是否有与存储此信息相关的法律?该主机明确表示不允许使用 HIPAA 存储,因此在考虑存储任何 PII 时,您应该考虑这种情况。您可能需要考虑寻找至少提供 BAA 的主机。
0赞 Chris Haas 6/4/2023
此外,加密数据库中的数据意味着无需搜索,至少没有一些额外的步骤和/或性能问题。
1赞 Chris Haas 6/4/2023
这里有一个很好的答案,总结了关键的存储选项:security.stackexchange.com/a/12334/86698

答:

1赞 Efi Jeremiah 6/5/2023 #1

根据您的描述,我考虑了以下选项:

  • 非公共文件夹中的文件:您可以将密钥放在公共网站文件夹中的文件中。但是,可以访问您的文件的人(例如您的托管服务提供商)可能仍会看到它。

  • 环境变量:这些类似于服务器上的隐藏设置。你可以把密钥放在那里,它比文件更安全一些。

  • 密钥管理系统:这些是确保您的密钥安全的特殊服务。AWS或Google Cloud等一些云提供商拥有它们。

  • 保管库:这是一个用于存储机密的工具。即使是最强大的用户也无法直接访问机密。

在任何情况下,您都需要定期对您的应用程序进行渗透测试,最低限度是保护您的 PHP 应用程序,以防止常见的 OWASP 攻击,例如 SQL 注入,并始终使用安全连接 (HTTPS)。

请记住,如果您正在处理敏感数据,则需要遵守有关数据隐私的法规,具体取决于您的生产运营所在的国家/地区,例如欧洲的 GDPR。相关的咨询将是一个好主意。