HTTPS协议前端(客户端浏览器)是否需要密码加密?

问题描述 投票:0回答:2

如标题所示,

环境:密码已经在数据库中哈希,并且使用HTTPS协议连接

我的问题很简单,通过HTTPS,我看到一些网站使用SSL,但在提交表单时还在前端(客户端浏览器)进行密码加密。

有要求吗?

在我看来,因为网站使用的是 SSL。无需在前端(客户端浏览器)加密密码。因为无论前端(客户端浏览器)做什么,黑客也可以通过使用库(客户端浏览器导入了 javascript 哈希算法)来加密并发送令牌。即使放盐也少点,只是黑客加密时多了一个步骤。

除非盐来自其他方式,而不是来自同一来源(从服务器渲染页面)。示例:从移动设备,并使用 otp 作为盐即可解析。

否则我认为加密在前端(客户端浏览器)中没有用。

我说得对吗?或者我错过了一些东西......

javascript ssl encryption https password-encryption
2个回答
2
投票

问题是,网站没有任何选择,只能信任 HTTPS/SSL 连接。无论您在客户端(浏览器)执行什么加密操作,都将在 JavaScript 中完成,并且必须首先将该脚本发送到客户端。 ManInTheMiddle 可以做与您的客户相同的事情,或者他可以简单地删除整个脚本。

当你和你的同事试图发明一种秘密语言,而坏人正在倾听时,你也会遇到同样的问题。如果您还没有分享秘密,这是不可能的。 SSL 证书解决了这个问题,因为浏览器内置了根证书列表,它将充当已经共享的秘密

对于具有客户端和服务器部分的apps,情况有点不同。在那里,您可以为您的应用程序安装一个密钥,并基于这个已经共享的密钥,您可以建立安全连接。

所以简短的回答是:是的,只要使用 HTTPS/SSL 加密连接,就可以以明文形式发送密码。


0
投票

不,您不必在发送 POST 请求之前加密密码,这里就是原因

© www.soinside.com 2019 - 2024. All rights reserved.