https和接口签名、api接口安全

时间:2024-02-01 14:32:10

为什么有了https  还需要做签名验证?
签名的作用
如果只用签名 不用https
密钥泄露怎么办
本文链接: https://blog.kfzsy.com/https-sign.html

为什么有了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是传输层保护数据的机密与数据安全。
总结就是签名可以兜底保证数据不被修改+过滤