应该在什么时候哈希密码?

时间:2019-03-18 15:34:05

标签: passwords password-protection password-encryption

我有一个有趣的(至少对我来说)架构问题。

想象一个企业Web应用程序。对于企业,我主要是试图建议该应用程序具有多个前端和后端组件。

这些后端组件之一负责存储用户登录数据。用户名,密码,可能还有电子邮件地址等,这样,多个前端应用程序都可以使用相同的注册,而无需重复数据。

在其中一个前端应用程序上创建注册表单时,您拥有一个密码,该密码从客户端的浏览器到前端服务器,再到在其存储位置的后端服务器。显然,密码在存储时必须进行哈希处理,但是哈希何时发生?

1)客户端:您没有通过网络传输的实际密码,这很酷,但是我不想以此来信任客户端应用程序。我什至不会在现实生活中考虑它,甚至不真正意识到陷阱。

2)前端服务器:密码在受控环境中被散列,但是,密码在整个过程中并未散乱。单独实施哈希过程可能不是一个好主意,可能会导致不同前端的不兼容。

3)后端服务器:严格从开发人员POV来看,这似乎是最好的主意,因为对于所有其他现有或不存在的前端应用程序,您只能实现一次哈希处理。但是,在登录或注册过程中,密码始终没有被篡改。我的一个例子是,即使密码只是在调试窗口中,在看到未散列的密码时,总会出现鸡皮ump。

我知道第一个选项并不是真正的选项,出于完整性考虑,我只是将其放在了那里。但是在2)和3)之间,退伍军人更喜欢哪一个?在现实生活中,是否考虑到有害的中间人监视前端和后端之间的数据传输的危险? https是否为密码提供了足够好的保护以使其散列?

0 个答案:

没有答案