记录方式:
主要根据目录记录主要的知识点,HTTP相关知识点书中写的很容易理解,建议阅读《图解HTTP》
Part7 确保web安全的HTTPS
- HTTP的缺点
1)通信使用明文(不加密),内容可能会被窃听
防止窃听保护信息的对策,最常用的就是加密:
①通信加密:
HTTP协议中没有加密机制,可以通过和SSL或TLS的组合使用,加密HTTP的通信内容(即HTTPS)
②内容加密
将报文主体加密,客户端和服务端都具备加密和解密机制。但是仍然存在被窃听的风险
2)不验证通信方的身份,有可能遭遇伪装
SSL不仅提供加密处理,而且还使用了证书的手段用于确定对方。证书由值得信任的第三方机构颁发,用于证明客户端和服务器是实际存在的。
3)无法证明报文的完整性,有可能已遭篡改
有使用HTTP协议确定报文完整性的方法,但并不可靠、便捷。常用的是MD5和SHA-1等散列值校验的方法,已经用来确认文件的数字签名方法。
- HTTP+加密+认证+完整性保护=HTTPS
1)什么是HTTPS
HTTP并非是应用层的一种新协议。只是HTTP通信接口部分用SSL和TLS协议代替。通常,HTTP直接和TCP通信;使用SSL时,变成先和SSL通信,再由SSL和TCP通信。
2)加密通信的基本概念和流程
参考
Part8 确认访问用户身份的认证
- SSL客户端认证(绝大部分使用的方式)
1)SSL客户端认证是借由HTTPS的客户端证书完成认证的方式
2)步骤:
①接收到需要认证资源的请求,服务器发送Certificate Request报文,要求客户端提供客户端证书
②客户端以Client Certificate发送证书报文
③服务器验证客户端证书,通过后领取证书内的公钥,开始HTTPS加密通信
3)SSL客户端采用双因素认证
SSL客户端认证会依靠证书(需要付费)和基于表单认证组合形成一种双因素认证。下面主要介绍基于表单认证的方式,一般会使用Cookie来管理Session。步骤:
①客户端把用户ID和密码等登录信息放入报文的实体部分,通常以POST方法发送请求。这时,使用HTTPS通信来进行HTML表单画面的显示和用户输入数据的发送
②服务器发放用以识别用户的Session ID,客户端发来的登录信息验证成功后,服务器会把用户的认证状态与Session ID绑定后记录在服务端。向客户端返回响应时,会在首部字段Set-Cookie内写入Session ID
③客户端接收到服务器发来的Session ID后,会将其作为Cookie保存在本地,用于下次通信的验证。
备注:常用的保存方式是,先利用给密码加盐的方式增加额外信息,再使用散列函数计算出散列值保存。
Part9 基于HTTP的功能追加协议
消除HTTP瓶颈的SPDY(暂略)
使用浏览器进行全双工通信的websocket