为什么有了https 还需要做签名验证?
当用户在浏览器当中加载受HTTPS保护的网站时,浏览器实际上只会验证两件事:网站是否提供了证书;证书是不是浏览器(操作系统)信任的根证书CA机构颁发的。实际上我们是在相信每个根CA机构都已尽全力来验证你要连接的服务器的身份。但是实际上有时候根CA机构会被骗。我们还相信每个根CA机构都能够保护自己的系统。但是实际上有时候根CA会被盗用。
安装个代理工具(fiddler)的证书,就可以用代理工具抓到https请求的内容,还可以篡改数据。
签名可以防止篡改数据,因为签名的密钥没有在网络中进行传输(服务器端线下颁发给客户端或者客户端自己输入的登陆密码作为密钥,甚至登陆使用的短信验证码也可以作为密钥)
https算法本质
https 采用 rsa+aes 结合
ras 为了 生成aes的密钥不被发现
aes 可以防止数据被偷窥
签名的作用
1、防止数据不被串改
如果aes的密钥被代理工具发现了(毕竟密钥会在网络中传输一次)导致数据被偷窥(获取到用户的登陆token), 例如黑客获取到了用户的token,在正常的客户端浏览器模拟此用户发送请求,此时签名防止数据不被串改,因为签名的密钥没有在网络中进行传输。
2、过滤很多无效请求
签名还能过滤很多无效请求 https 不保证传送的数据对系统是 “无害”,例如平台内部伪造支付请求(没有签名验证模块,无法甄别是否来源于商户),或者大量无效请求直接发送到业务服务器上。
3、防止内网中 https过后 的 http传输被篡改
签名可以防止内网中 https过后 的 http传输被篡改 签名HMAC是应用层采用的手段来保护数据安全,SSL/TLS是传输层保护数据的机密与数据安全。
总结就是签名可以兜底保证数据不被修改+过滤
如果只用签名 不用https
黑客可以获取到 用户发送的 签名信息和明文请求参数 以及签名算法 暴力破解出 签名的密钥
暴力破解需要时间,如果超过服务器设置token失效时间,则破解出来的密钥也失效了,万一被破解了 及时修改密钥或者 两者一起更换
所以目前最安全的是 https + 签名+token 过期(定期更换token或者密钥或者 两者一起更换) 保证接口安全
更多内容请看 : https://blog.kfzsy.com/https-sign.html
共同学习,写下你的评论
评论加载中...
作者其他优质文章