最近我一直试图在我在互联网上偶然发现的登录脚本中实现我自己的安全性.在努力学习如何制作我自己的脚本为每个用户生成一个盐之后,我偶然发现了password_hash.
根据我的理解(基于本页的阅读:http://php.net/manual/en/faq.passwords.php),当您使用password_hash时,已经在行中生成了salt.这是真的?
我的另一个问题是,含有2种盐是不是很聪明?一个直接在文件中,一个在DB中?这样,如果有人在数据库中泄露了你的盐,你仍然直接在文件中?我在这里读到,存储盐绝不是一个明智的想法,但它总是让我困惑的是人们的意思.
我在将密码存储在用户数据库中之前尝试对密码进行哈希处理,因此我运行代码:
$hashedPass = password_hash($pass, PASSWORD_DEFAULT);
Run Code Online (Sandbox Code Playgroud)
这段代码给了我一个值,比如说$ 2y $ 10 $ wAJr0Z1spRtOcK4cLhIkguUCKgwZKYrwm.nRhm6AtCfDH8ri7ylJu存储在数据库中。现在,当我尝试登录时,作为密码输入的相同字符串给出了完全不同的$ hashedPass:说$ 2y $ 10 $ cayCQDSQ6pCICSozuIgBNu9uIopIoT5R6Y7aHXG6wx4v / oKx.Ipse
这只是随机的吗?有什么我应该代替的吗?