Password_hash()需要在提交之前进行预先散列吗?

时间:2015-01-10 19:08:31

标签: javascript php password-protection password-encryption password-hash

我正在使用PHP 5.5+ password_hash()函数在数据库中存储之前对我的密码进行哈希处理。到目前为止一切都很好。

我有点不确定是需要预先散列从表单发送到我的PHP脚本的密码。

现在表单提交程序(简称)就像这样完成:

  1. 包含表单的HTML文件以form method =“..”调用控制器脚本 - >
  2. 控制器脚本接收呼叫并选择正确的功能 - >
  3. 函数执行和存储到数据库。
  4. 所以基本上这个呼叫是通过提交到存储的三个文件发送的。

    我认为,由于散列是在第三个也是最后一个文件中完成的,所以在某个地方,数据可能会被劫持并在普通视图中看到。

    在初次提交表单期间,我是否应该担心并以某种方式使用某些JavaScript哈希密码,还是安全的?最终的网站很可能会使用SSL证书,但我仍然不能100%确定我是否安全。

1 个答案:

答案 0 :(得分:3)

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

对于攻击者在不同控制器之间传递密码时劫持密码,这意味着攻击者必须能够读取PHP进程的内存,这需要root权限。如果攻击者具有root权限,则您遇到了更大的问题,并且您的解决方案无法保存您,因为同一攻击者也可以修改PHP文件以删除您的“保护”。

至于在通过互联网飞行时劫持密码,唯一的解决方案是使用HTTPS - 无论你使用什么Javascript加密/哈希都是毫无意义的,因为窃听者也能够在传输和改变页面时改变它。它没有添加额外的“安全性”的修改版本;关于在Security.SE上尝试保护没有HTTPS的登录表单有很多问题,请查看它们: