有没有办法在 php 中隐藏加密密钥或算法?
Posted
技术标签:
【中文标题】有没有办法在 php 中隐藏加密密钥或算法?【英文标题】:Is there any way to hide encryption key or algorythm in php? 【发布时间】:2021-09-07 19:51:54 【问题描述】:我想将敏感的用户数据保存到我的 mysql 数据库表中。当然,我希望在保存到表之前对其进行加密。
我在网上看到很多教程,教程制作者在源代码中清楚地写了加密密钥和解密密钥,这对我来说没有意义。
如果有人可以访问数据库,如果源代码(包括代码并显示我们如何加密或解密数据)被黑客入侵,他/她看不到明文数据也没关系。所以他/她可以轻松读取我们的数据。
我的问题是,有没有办法隐藏加密密钥或加密算法,如果是,我该怎么做?
【问题讨论】:
你确定吗?如果您不知道如何加密此类数据,则应不要存储信用卡号。 我现在什么都没做,但我想了解它是如何制作的。 如果您的支付处理器支持,您应该订阅令牌服务。如果您想加密,您可以使用 HSM 安全地保护您的密钥 【参考方案1】:恕我直言,您提议的做法是一个非常糟糕的主意。如果您将卡号存储在您的软件可以解密和使用它们的形式中,那么您将很难通过支付卡行业审核。如果网络蠕变破坏了您的系统,您将收到来自 Brian Krebs(来自 krebsOnSecurity.com)的可怕电话。请改用 stripe.com 或 Braintree。他们有非常称职的安全团队。它们为您提供安全令牌来代表您客户的卡号。
但这不是你问的。您想要一种可逆的方式来加密支付卡信息。
您可以使用私钥/公钥方案。要以最佳安全性执行此操作,您将在通常关闭并与网络断开连接的机器上生成密钥对。您将公钥复制到您的 Web 服务器,并使用它来加密支付卡数据。 (顺便说一下,禁止商家以任何形式存储 3 位 CVV 号码。)php 提供了openssl_public_encrypt 函数。
然后,当您需要解密卡号时,您将暂时打开安全机器并在那里解密卡号。你可以使用openssl_private_decrypt。
我曾经改造了一个支付处理方案,它完成了这个安全机器的事情,所以它改用了 stripe.com。使用该服务的一切都变得更容易了。
一般来说,为了存储敏感数据(严格监管的支付卡除外),您
-
使用您的 DMBS 提供的静态加密方案来加密您的表空间。
阅读并遵循OWASP 建议,以保护您的网络应用。
在您的系统上执行渗透测试。 Burpscan 是您自己可以使用的多种工具之一。
【讨论】:
感谢您的回答 O.Jones。解释清楚简单。以上是关于有没有办法在 php 中隐藏加密密钥或算法?的主要内容,如果未能解决你的问题,请参考以下文章