保护数据库中的密码字段

时间:2011-04-28 17:02:07

标签: php mysql password-protection

  

可能重复:
  Best way to store password in database

我有一个数据库(mySQL),表USERS有这样的结构:

  • UserID(varchar)
  • Passwd(varchar)
  • 名称(varchar)
  • BancAccount(varchar)

Passwd和BancAccount是数据库上的纯文本。从PHP代码开始,登录完成后,它会将UserID和Passwd的用户输入与数据库中的结果进行比较。

我想让它更安全,所以如果有人能够进入数据库,他就看不到这两个关键领域。有什么建议吗?

感谢

4 个答案:

答案 0 :(得分:2)

你可以用盐密码哈希。并且有一个完全独立的银行账户表,它以某种方式链接到该表,但非常模糊。

答案 1 :(得分:2)

尝试使用PHP crypt函数并使用数据库存储salt,跟进Neal所说的内容,确保你尝试使用一些默认设置来隐藏它...但是你需要salt用于比较用户输入。

PHP Crypt()

答案 2 :(得分:2)

你绝对不应该将密码存储在普通密码中,而只能存储在密码中,最好是salted hash

您使用哪种哈希函数以及如何选择盐也是一个重要问题。 Many people suggest to use bcrypt as the hash function for passwords具有成本参数来调整生成哈希值的计算成本(较长的暴力攻击将持续的成本越高)。 salt应该是一个随机值,并且每个密码都是唯一的。

答案 3 :(得分:0)

我建议将包含密码的串联字符串放在一起;也称为“Salt and Pepper”密码,然后用SHA1加密。然后在检查数据库字段时使用相同的算法。

$salt = "a7s8as98sa9";
$pepper = date("H");

$hash = sha1($salt . $password . $pepper);

使用动态盐,如随机生成的字符串,数字,日期或时间戳,只是创造力的冰山一角。