不加密直接传输
会在HTTP报文的body中显示密码明文
对称加密
加密算法写在前端里,前端有被破解的风险
非对称加密
SSL劫持攻击
将自己接入到客户端和服务器中间,将公钥替换成自己的公钥。
SSL剥离攻击
也要将自己设为中间人,与客户端HTTP明文会话,与服务器继续HTTPS会话
密码加密后,直接用密文请求,或者将报文改动一小部分再次请求。
TLS是可以防止重放攻击的,具体是通过报文鉴别码MAC(Message Authentication Code)
timestamp:
在http请求里加上timestamp参数,和其他参数一起进行数字签名。
服务器将timestamp的时间错与当前时间比较,如果小于60s则确认安全。
缺点:如果重放攻击发生在这60s之内,timestamp就没有意义了。
nonce:
在本地生成一个随机字符串(mac地址,时间戳,token之类),服务器接收到后,将
这个随机字符串保存在一个“集合”中,如果后来的请求的nonce参数在“集合”中
说明这是一个非法请求。
缺点:集合会越来越大,占用内存。
基于timestamp和nonce的方案
这两个方案一起用,大于60s清除一次集合。
数字签名
将明文hash生成摘要,然后将摘要用私钥加密后生成的签名和报文一起传给服务器,服务器用私钥解密签名,然后服务器hash报文对比签名看是否相同。如果相同说明报文没有被人动过。
参考文章:
原文链接:https://blog.csdn.net/weixin_42375964/article/details/109132907
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18530