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)
谢谢好吧,你可以在密码上撒盐。并且有一个完全独立的银行账户表,该表以某种方式链接到该表,但非常模糊。尝试使用PHP crypt函数,并使用数据库存储盐,以跟进Neal所说的内容,请确保您也尝试使用一些模糊性来隐藏它…但是您需要salt来比较用户输入和以后的输入
您绝对不应该将密码存储在普通格式中,而应该只存储密码的一个散列,最多只能存储一个
您使用哪个哈希函数以及如何选择salt也是一个重要的问题。它有一个成本参数来调整生成哈希值的计算成本(越昂贵,暴力攻击持续时间越长)。salt应该是一个随机值,每个密码都是唯一的。我建议将包含密码的字符串放在一起;还调用了“Salt and Pepper”密码,然后使用SHA1对其进行加密。然后在检查数据库字段时使用相同的算法
$salt = "a7s8as98sa9";
$pepper = date("H");
$hash = sha1($salt . $password . $pepper);
使用动态盐,如随机生成的字符串、数字、日期或时间戳,只是创造性的冰山一角。哈希法很好。默默无闻带来的安全感就更少了。我会忽略这个答案的第二部分。我能问一下盐和胡椒的概念是从哪里来的吗?到目前为止,我从未听过或看过这本书(可以说我在这方面做了不少研究)。你能告诉我关于这个问题的权威消息来源吗?