【发布时间】:2015-01-10 19:08:30
【问题描述】:
我正在使用 PHP 5.5+ password_hash() 函数在存储到数据库之前对我的密码进行哈希处理。到目前为止一切顺利。
我有点不确定是否需要对从表单发送到我的 PHP 脚本的密码进行预散列处理。
现在表单提交过程(简而言之)是这样完成的:
- 包含表单的 HTML 文件在表单方法 =“..”中调用控制器脚本 ->
- 控制器脚本接收调用并选择正确的函数 ->
- 函数执行和存储到数据库。
所以基本上调用是通过从提交到存储的三个文件发送的。
我认为,由于散列是在第三个也是最后一个文件中完成的,因此数据可能会被劫持并以普通视图查看。
在初次提交表单时,我是否应该担心并以某种方式使用 JavaScript 对密码进行哈希处理,或者这样做是否安全?最终站点很可能会使用 SSL 证书,但我仍然不能 100% 确定我是否安全。
【问题讨论】:
-
如果您在将密码发送到网络服务器之前在浏览器中对密码进行哈希处理,然后在服务器上再次进行哈希处理,您几乎肯定会削弱最终存储的密码,因为初始哈希会降低熵密码....如果您通过 SSL 发送,那么您的浏览器和网络服务器之间的安全性由 SSL 处理,因此无需在浏览器中进行散列
-
所有 PHP 脚本都在一个解释器实例中执行。一个非问题主要是 PHP 如何读取表单/POST 数据。如果有有一个文件附件,则创建一个临时文件(对于大多数登录表单来说不太可能)。您可能会问到通过 HTTP 传输的未散列密码?这只能通过 TLS 解决。
-
然后我将采用我今天拥有的解决方案,并希望最好。感谢您的宝贵时间。
标签: javascript php password-protection password-encryption password-hash