Password_hash() 提交前需要预哈希吗?

Password_hash() need of pre-hashing before submit?

我正在使用 PHP 5.5+ password_hash() 函数对我的密码进行哈希处理,然后再存储到数据库中。到目前为止一切顺利。

我有点不确定的是,是否需要对从表单发送到我的 PHP 脚本的密码进行预散列处理。

现在表单提交过程(简而言之)是这样完成的:

  1. HTML 包含表单的文件调用表单 method=".." 中的控制器脚本 ->
  2. 控制器脚本收到调用并选择正确的函数 ->
  3. 函数执行和存储到数据库。

所以基本上调用是通过三个文件从提交到存储发送的。

我在想,由于散列是在第三个也是最后一个文件中完成的,因此数据可能会被劫持并以普通视图显示。

我是否应该担心并在初次提交表单时以某种方式对密码进行哈希处理 JavaScript 或者它是否安全?最终站点很可能会使用 SSL 证书,但我仍然不能 100% 确定我是否安全。

您对劫持控制器之间密码的担忧是多余的:

对于攻击者来说,当密码在不同控制器之间传递时劫持密码,这意味着攻击者必须能够读取 PHP 进程的内存,这需要 root 权限。如果攻击者拥有 root 权限,那么你的问题就更大了,你的解决方案也救不了你,因为同一个攻击者也可以修改 PHP 文件来删除你的 "protection".

至于在密码通过 Internet 时劫持密码,唯一的解决方案是使用 HTTPS - 无论您 Javascript cryptography/hashing 做什么都是毫无意义的,因为窃听者也能够改变在传输页面时提供修改后的页面,而无需添加额外的 "security";关于在 Security.SE 上尝试保护没有 HTTPS 的登录表单有很多问题,请查看它们: