Php 保护数据库中的密码字段

Php 保护数据库中的密码字段,php,mysql,password-protection,Php,Mysql,Password Protection,可能重复: 我有一个数据库(mySQL),其中表用户具有以下结构: 用户ID(varchar) Passwd(varchar) 名称(varchar) 班卡计数(varchar) Passwd和BancAccount是数据库中的纯文本。从PHP代码中,登录完成后,它会将用户输入的UserID和Passwd与来自数据库的结果进行比较 我想让它更安全,这样如果有人能够闯入数据库,他就看不到这两个关键字段。有什么建议吗 谢谢好吧,你可以在密码上撒盐。并且有一个完全独立的银行账户表,该表以某种方式

可能重复:

我有一个数据库(mySQL),其中表用户具有以下结构:

  • 用户ID(varchar)
  • Passwd(varchar)
  • 名称(varchar)
  • 班卡计数(varchar)
Passwd和BancAccount是数据库中的纯文本。从PHP代码中,登录完成后,它会将用户输入的UserID和Passwd与来自数据库的结果进行比较

我想让它更安全,这样如果有人能够闯入数据库,他就看不到这两个关键字段。有什么建议吗


谢谢

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

尝试使用PHP crypt函数,并使用数据库存储盐,以跟进Neal所说的内容,请确保您也尝试使用一些模糊性来隐藏它…但是您需要salt来比较用户输入和以后的输入


您绝对不应该将密码存储在普通格式中,而应该只存储密码的一个散列,最多只能存储一个


您使用哪个哈希函数以及如何选择salt也是一个重要的问题。它有一个成本参数来调整生成哈希值的计算成本(越昂贵,暴力攻击持续时间越长)。salt应该是一个随机值,每个密码都是唯一的。

我建议将包含密码的字符串放在一起;还调用了“Salt and Pepper”密码,然后使用SHA1对其进行加密。然后在检查数据库字段时使用相同的算法

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

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

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

哈希法很好。默默无闻带来的安全感就更少了。我会忽略这个答案的第二部分。我能问一下盐和胡椒的概念是从哪里来的吗?到目前为止,我从未听过或看过这本书(可以说我在这方面做了不少研究)。你能告诉我关于这个问题的权威消息来源吗?