提高服务器验证的密码安全性

时间:2012-12-28 22:56:09

标签: php mysql

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

服务器1:

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

我使用PBKDF2散列,使用基于this code构建的类完成。

服务器2:

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

我的问题:

如果服务器1以这种格式存储paswword:算法:迭代:salt:hash

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

如果服务器1遭到入侵,我觉得拥有这种格式的密码会让他们很容易破解网站的密码并访问用户的信用卡信息。

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

我在想这个吗?

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

根据评论进行更新

我建立了供暖和空运公司系统。任何在线支付的人如果愿意,都可以使用quickbooks存储他们的cc信息。我有几个较大的客户,我们每月在办公室收费,并通过桌面终端处理cc。这些客户在我们的服务器上有客户档案,他们可以访问。这些是我希望允许存储cc信息的客户端。这样我就不必将cc信息存储在我们办公室的纸上,供任何人查找。

1 个答案:

答案 0 :(得分:2)

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

但是我离题了...答案是你对用户登录详细信息的哈希应该是安全的,就像你所描述的那样。如果服务器1的数据库受到威胁,它应该尽可能安全。您可以在PHP代码中添加一层混淆,以便在盐的哈希中执行某些操作,以便有权访问数据库而不是代码的人会更难以知道您用于哈希的进程密码,这将避免黑客试图强制密码,如iloveu等强制密码。我也高度建议服务器2上的信用卡信息以加密格式存储使用{ {1}}或PHP的mcrypt_encrypt()函数。

确保通过POST表单清理所有输入,您应该好好去。