PHP password_hash如何保护密码?没有询问哈希,而是整体流程

时间:2017-07-18 00:53:03

标签: php web-services hash passwords

在许多基本的PHP用户登录中,password_hash用于散列数据库存储的密码。我得到了哈希的过程,如何使用password_hash,以及为什么要这样做但我不明白这是如何实际保护密码的?我觉得我可能会遗漏一些东西。

如果我错了,请纠正我,但PHP几乎只在服务器端运行。这是不是意味着发送普通密码,然后在到达服务器时进行哈希处理?这不允许其他人在运输中挑选密码吗?

如果之前有人问过,我道歉。在问这个问题之前我曾试图进行搜索,但所有匹配都是password_hash的实际机制。

2 个答案:

答案 0 :(得分:1)

是的,password_hash会对服务器端进行哈希处理。网络嗅探可以恢复密码 - 但无论如何你都可以通过轻松嗅探未加密的流量来进入帐户。

哈希打算做什么密码是在发生数据库泄露/转储时保护用户的密码,防止用户访问密码。收获密码(很容易 - 他们仍然可以通过大量的时间和精力进行暴力破解)。它没有保护传输中的密码,这是HTTPS的用途。一旦密码进入服务器,散列就会保护,而HTTPS确保只有消息的预期接收者(在这种情况下,服务器)才能读取内容并确保它没有被篡改。

密码哈希可以保护用户免受攻击。很多用户使用常用密码或continually reuse the same password for many sites。密码哈希再次用于保护用户'单向数学函数背后的密码,通过使纯文本密码不可用,至少应该减缓任何潜在的攻击者。

答案 1 :(得分:0)

您永远不会通过互联网发送不受SSL证书保护的密码。这样,密码在传输过程中受到保护,直到它到达端点并在服务器上解密。

只要安全证书到位且运行正常,开发人员就无法看到此过程。这并不是说没有其他风险,而是减轻了大部分风险。