http存在的问题
1. 明文传输,报文可能被窃听(报文没有被加密)
- tcp/ip是可能被窃听的(一切明文传输的内容都是有可能被窃听的,加密之后也是可能被窃听的,只是窃听者不知道被窃听的内容)
- 通信加密:https(http+ tls),通信线路的加密(建立安全的通信管道)
- 内容加密:内容加密之后才会被发出去
2. 没有验证通信双方的身份,可能会有伪装身份的问题
- 任何人都可以发起请求
- 无法确定请求者(客户端的身份)
- 无法确定响应者(服务器端的身份)
- 无法确定通信双方的访问权限
- DoS攻击
- 使用ssl验证双方的身份,CA证书
3. 没有验证报文的完整性(报文内容的正确性),报文可能已经被篡改
- 接收到的内容可能有错,请求报文和响应豹纹都有可能被篡改,而且无法验证收到的报文何时发出的报文是否一致
- 使用数字签名防止篡改:Md5,SHA-1(但是md5本身是否被篡改是无法确定的)
https = http + 身份认证 + 加密 + 完整性保护
加密算法
- 共享密钥算法(通信双方用同一个密钥进行加密解密) * 需要考虑密钥传输的问题,密钥没有被窃听,篡改
- 公开密钥算法(公钥,私钥)
http vs https
- https更安全,但是需要更多的开销,能够处理的请求数量会减少(涉及到个人隐私安全的地方使用https)
- 可以部分加密,对重要信息进行加密
- CA证书需要购买
《图解http》
爱http 爱生活