关于前端数据加密
什么是前端加密
前端加密就是在客户端对用户要提交的内容进行加密,从而降低服务器端的压力。
为什么要进行前端加密
进行前端加密值后,要对密码进行破译和破解,则需要在客户端方面消耗更多的资源,延长了破解时间,从而获得了更高的安全性。
前端加密方式:
- https,安全性高。证书认证,一种是来自于证书颁发机构;一种是自己生成证书,但需要浏览器添加信任;成本高。
- post之前,通过js对密码进行加密。前端js:md5+salt(随机数),后台服务器php : 截取salt后的数与数据库的密码进行比较;生成密码:md5()
- 用RSA进行加密传输
- 使用密码空间,进行加密传输
- 有服务端颁发并验证一个带有时间戳的可信token
在固定字符串上截取随机长度和打乱顺序的字符串
function randomString(length) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split(''); if (! length) { length = Math.floor(Math.random() * chars.length); } var str = ''; for (var i = 0; i < length; i++) { str += chars[Math.floor(Math.random() * chars.length)]; } return str; }
RSA加密
- 后端先给前端发放一个公钥(public-key)
- 前端使用公钥对密码(password)等敏感字段进行加密
- 前端使用post方式将使用公钥加密后的密码发送到后端
- 后端使用私钥(private-key)进行解密,获得原密码
MD5实现的前端加密
- MD5定义
MD5 is a secure hash algorithm. It takes a string as input, and produces a 128-bit number, the hash. The same string always produces the same hash, but given a hash, it is not generally possible to determine the original string. Secure hash algorithms are useful for protecting passwords and ensuring data integrity.