我目前正在构建一个获取信用卡信息的设置。使用了以下结构:
服务器 1:
- MySQL 用户设置为只读
- 持有登录凭据。
我使用 PBKDF2 散列,用我基于 this code 构建的类完成.
服务器 2:
- MySQL用户设置读写
- 持有所有客户的信用卡信息
我的问题:
如果服务器 1 以这种格式存储密码:algorithm:iterations:salt:hash
例如:sha256:1000:Pe27BkIKkBHklogp9Io80iRKtF+6koly:nrYUwOlixwJECRcjBRKwQ+MVNMTbnYnm
如果服务器 1 遭到破坏,在我看来,使用这种格式的密码将使他们很容易破解站点的密码并访问用户的信用卡信息。
在这种情况下我需要使用 Mysql(AES_ENCRYPT() 和 AES_DECRYPT())吗?
我是不是想多了?
是否有更好的方法来保护服务器 1 中的信息?
根据评论更新
我建立了供暖和空调公司系统。如果他们选择,任何在线支付的人都可以使用 quickbooks 存储他们的抄送信息。我有几个大客户,我们每月在办公室开账单,并通过桌面终端处理抄送。这些客户在我们的服务器上有客户资料,他们可以访问这些资料。这些是我希望允许在其中存储 cc 信息的客户端。这样我就不必将抄送信息存储在我们办公室的纸上以供任何人查找。
最佳答案
老实说,如果我设法攻破服务器 1,我不会尝试破解这些密码。他们应该是安全的。我更可能做的是尝试在服务器上安装我自己的代码,以便在用户登录时向我发送密码和/或信用卡信息。例如,假设您在名为 login.php 的文件中处理身份验证.如果我可以妥协 login.php,那么当它验证登录时,我可以让它执行 curl 命令或其他东西来将登录信息发送到我自己的服务器,我可以在那里收集它。
但我离题了...答案是您对用户登录详细信息的哈希处理应该是安全的,正如您所描述的那样。如果服务器 1 的数据库受到威胁,它应该尽可能安全。您可以在 PHP 代码中添加一层混淆,以在盐的散列中执行类似 munge 之类的操作,这样可以访问数据库但不能访问代码的人将很难知道您使用了哪个进程进行散列密码,这将避免黑客尝试暴力破解密码,例如 password、iloveu 等。我还高度建议服务器 2 上的信用卡信息使用 AES_ENCRYPT()
以加密格式存储或 PHP 的 mcrypt_encrypt()
函数。
确保通过 POST 表单清理所有输入,然后就可以开始了。
关于php - 提高服务器验证中的密码安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076818/