9

我目前正在建立一个设置来获取信用卡信息。使用了以下结构:

服务器 1:

  • MySQL用户设置为只读
  • 保存登录凭据。

我使用 PBKDF2 散列,使用基于此代码构建的类完成。

服务器 2:

  • MySQL用户设置为读写
  • 保存所有客户的信用卡信息

我的问题:

如果服务器 1 以这种格式存储密码:algorithm:iterations:salt:hash

例如:sha256:1000:Pe27BkIKkBHklogp9Io80iRKtF+6koly:nrYUwOlixwJECRcjBRKwQ+MVNMTbnYnm

如果服务器一被攻破,在我看来,拥有这种格式的密码会让他们很容易破解网站的密码并访问用户的信用卡信息。

这是我需要使用 Mysql(AES_ENCRYPT() 和 AES_DECRYPT())的情况吗?

我是不是想太多了?

有没有更好的方法来保护服务器 1 中的信息?

根据评论更新

我建立了我的供暖和空气公司系统。如果他们愿意,任何在线支付的人都可以将他们的抄送信息与 quickbooks 一起存储。我有几个较大的客户,我们每月在办公室开账单,并通过桌面终端处理抄送。这些客户在我们的服务器上有客户资料,他们可以访问这些资料。这些是我希望允许在那里存储 cc 信息的客户端。这样我就不必将抄送信息存储在我们办公室的纸上供任何人查找。

4

1 回答 1

2

老实说,如果我设法攻破服务器 1,我不会尝试破解这些密码。他们应该是安全的。我更有可能做的是尝试在服务器上安装我自己的代码,以便在用户登录时向我发送密码和/或信用卡信息。例如,假设您在名为 login.php 的文件中处理身份验证. 如果我可以破坏 login.php,那么当它验证登录时,我可以让它执行 curl 命令或其他东西,将登录信息发送到我自己的服务器,我可以在那里收集它。

但是我离题了...答案是您对用户登录详细信息的散列应该是安全的,正如您所描述的那样。如果服务器 1 的数据库遭到破坏,它应该尽可能安全。您可以在 PHP 代码中添加一层混淆,以在盐的哈希中执行类似 munge 之类的操作,这样可以访问数据库但没有代码的人将很难知道您使用什么过程进行哈希处理密码,这将避免黑客试图暴力破解密码,如密码、iloveu 等。我还强烈建议服务器 2 上的信用卡信息使用AES_ENCRYPT()PHP 或 PHP 的mcrypt_encrypt()函数以加密格式存储。

确保你通过 POST 表单清理了所有输入,你应该很高兴。

于 2012-12-29T01:11:50.597 回答