是否有必要在通过HTTPS发送密码之前对其进行哈希处理?

pyo*_*yon 5 security https

我不熟悉Web开发(今年1月开始)和Web安全(不到一周前开始!),所以如果我的问题严重缺乏教育,误导或简单愚蠢,请原谅.

我为主要产品工作的公司是一个很好的老式客户/服务器系统.为了使它对我们的客户更具吸引力,我被赋予了开发一系列以任务为中心的简单Web应用程序的任务,这些应用程序补充了系统的整个以业务流程为中心的设计.例如,如果用户在组织中的角色包括批准采购订单和付款订单,他们可能会发现使用WebApprovals应用程序比打开采购和库存模块更容易,并使用它们分别批准采购订单和付款订单.

不用说,我的所有Web应用程序都有一个登录页面.当然,我需要它们是安全的.因此,根据设计,这些Web应用程序只能通过HTTPS使用,而不能通过纯HTTP使用.

现在,我想知道在没有任何进一步安全措施的情况下通过HTTPS发送密码是多么安全.它足够安全吗?具有安全领域经验的人必须说些什么?

Mat*_*hen 14

HTTPS将处理传输安全性,因此没有理由在客户端散列它们.如果这样做,从服务器的角度来看,散列密码基本上就是真正的密码.如果有人窃取了您的数据库,那么每一行都将具有服务器期望通过网络接收的值.攻击者可以简单地创建一个直接发送哈希的新客户端,而不必担心任何真正的哈希.

但是,通过网络发送的密码不应存储在数据库中.相反,应该有每用户随机盐.这应该用于哈希密码服务器端.

请参阅Salting Your Password:Best Practices?.

  • @Eduardo,您将每用户salt和哈希存储在数据库中.两者都不是真正的秘密.然后,您对存储的salt和提供的密码进行哈希处理,并根据存储的哈希检查结果.请参阅[本文](http://wheelersoftware.com/articles/storing-passwords-securely-hash-salt.html).您还可以搜索Stack Overflow以获取更多信息. (2认同)
  • @Eduardo,我写了一篇文章:http://dustwell.com/how-to-handle-passwords.html,它更详细地解释了每个用户的全部内容. (2认同)