web前端用户的密码提交时应当怎样加密

2020-11-24 11:48:12 字数 3095 阅读 8637

1楼:育知同创教育

密码在前端加密完全没有意义,对密码系统的安全性不会有任何提高,反而会引发不必要的麻烦。首先,做前端开发的人需要知道,前端系统的控制权是完全在用户手里的,也就是说,前端做什么事情,用户有完全的控制权。假设如同 @陈轩所说,前端做过了md5,后台就不用做了,这个做法会有什么后果?

如果某一天,这个系统的数据库泄露了,黑客就直接拿到了每个用户的密码md5值,但此时,由于黑客知道密码是在前端进行哈希的,所以他不需要爆破出该md5对应的原文是什么,而是直接修改客户端向服务器发出的请求,把密码字段换成数据库中md5就可以了,由于与数据库中记录一致,直接就会登录成功。这跟直接存储明文密码没有任何区别!!!所以不管前端是不是加密了密码,后台使用安全的哈希算法对内容再次转换是非常有必要的。

(md5可不行,要用bcrypt,我之前回答过一个类似的:随着显卡性能的高速发展,目前的快速hash算法是否已经变得不够安全了?)这个回答还有一个人赞同,希望大家别被错误答案误导了。

另外一个答案 @林鸿所说,在非安全http连接上,可以防止原始密码被窃听。但问题在于由于你的登录系统接受的哈希过的密码,而不是原文,窃听者根本不需要原始密码,只要通过哈希结果就可以伪造请求登录系统。这样做只能防止被窃听到原文的密码被攻击者用在社会学攻击上,而不能改善该**的安全性。

所以不管前端是不是加密了密码,使用https安全连接进行登录都是非常有必要的。以上我说的两点,合起来看就是:不管前端是否加密了密码,都不能以此为假设,让后端设计的安全等级下降,否则就会有严重的安全问题。

实际上,前端进行密码加密,可以看做帮助用户多进行了一次原文的转换,不管用了什么加密算法,算出来的结果都是密码原文,你该如何保护用户的原始密码,就该如何保护此处的加密结果,因为对你的登录系统来说,它们都是密码原文。以上这些,说明了密码加密是没有什么意义的,接下来,我要说明前端加密会带来什么问题。有些人会认为前端进行了加密,可以降低后台的安全性需求,这种错误的观念会造成系统的安全漏洞。

实际上,你不能对前端做任何的假设,所有跟安全相关的技术,都必须应用在后台上。前端进行加密会造成页面需要js脚本才能运行,那么假设你的系统需要兼容不能运行js的客户端,就必须再设计一个使用原文的登录接口。由于前端是不是加密,所有安全机制都必须照常应用,所以为系统增加这样的复杂性是完全没必要的,即使传输明文密码,只要正确使用了https连接和服务器端安全的哈希算法,密码系统都可以是很安全的。

web前端密码加密是否有意义

2楼:匿名用户

密码在前端加密完全没有意义,对密码系统的安全性不会有任何提高,反而会引发不必要的麻烦。首先,做前端开发的人需要知道,前端系统的控制权是完全在用户手里的,也就是说,前端做什么事情,用户有完全的控制权。假设如同 @陈轩所说,前端做过了md5,后台就不用做了,这个做法会有什么后果?

如果某一天,这个系统的数据库泄露了,黑客就直接拿到了每个用户的密码md5值,但此时,由于黑客知道密码是在前端进行哈希的,所以他不需要爆破出该md5对应的原文是什么,而是直接修改客户端向服务器发出的请求,把密码字段换成数据库中md5就可以了,由于与数据库中记录一致,直接就会登录成功。这跟直接存储明文密码没有任何区别!!!所以不管前端是不是加密了密码,后台使用安全的哈希算法对内容再次转换是非常有必要的。

(md5可不行,要用bcrypt,我之前回答过一个类似的:随着显卡性能的高速发展,目前的快速hash算法是否已经变得不够安全了?)这个回答还有一个人赞同,希望大家别被错误答案误导了。

另外一个答案 @林鸿所说,在非安全http连接上,可以防止原始密码被窃听。但问题在于由于你的登录系统接受的哈希过的密码,而不是原文,窃听者根本不需要原始密码,只要通过哈希结果就可以伪造请求登录系统。这样做只能防止被窃听到原文的密码被攻击者用在社会学攻击上,而不能改善该**的安全性。

所以不管前端是不是加密了密码,使用https安全连接进行登录都是非常有必要的。以上我说的两点,合起来看就是:不管前端是否加密了密码,都不能以此为假设,让后端设计的安全等级下降,否则就会有严重的安全问题。

实际上,前端进行密码加密,可以看做帮助用户多进行了一次原文的转换,不管用了什么加密算法,算出来的结果都是密码原文,你该如何保护用户的原始密码,就该如何保护此处的加密结果,因为对你的登录系统来说,它们都是密码原文。以上这些,说明了密码加密是没有什么意义的,接下来,我要说明前端加密会带来什么问题。有些人会认为前端进行了加密,可以降低后台的安全性需求,这种错误的观念会造成系统的安全漏洞。

实际上,你不能对前端做任何的假设,所有跟安全相关的技术,都必须应用在后台上。前端进行加密会造成页面需要js脚本才能运行,那么假设你的系统需要兼容不能运行js的客户端,就必须再设计一个使用原文的登录接口。由于前端是不是加密,所有安全机制都必须照常应用,所以为系统增加这样的复杂性是完全没必要的,即使传输明文密码,只要正确使用了https连接和服务器端安全的哈希算法,密码系统都可以是很安全的。

3楼:育知同创教育

有意义的,加密之后,数据在网络传输的过程中被截取破解的难度增加,数据更安全。对安全或数据要求更高的都会在浏览器端都会进行加密的。

4楼:小小苦咖啡

动态非对称加密怎么可能没意义?拦截到密文有什么用?登陆成功后这个加密后的密钥已经失效了。

如何保证用户登录时提交密码已经加密

5楼:匿名用户

可以采用rsa非对称加密方式,前端js用过公钥把密码等敏感信息加密后传到后台,后台再通过私钥解密

如何在前端调用js对密码进行加密 10

6楼:网海1书生

加密和解密原则上都应该在后台完成才合乎常理

,如果在前端加密,就好比在众目睽睽之下化妆易容,然后声称自己是另一个人一样,没意义啊。

如果一定要在前端加密,可以这样:

用户注册时秘密是在前端md5加密还是后端

7楼:匿名用户

准确的说两者都有,加密传输到服务器解析处理,再加密传输返回

表单提交的密码为什么要进行md5加密? md5加密一般在前台进行还是在后台进行;

8楼:期待丶过了头

为了安全起见。

md5加密后就算密码泄露了,别人也不知道密码是什么。

一般都是在后台加密的。