HTTP学习笔记
1.TCP/IP协议族
分层:应用层HTTP/DNS/FTP。传输层TCP/UDP。网络层IP/ARP。数据链路层(处理连接网络的硬件部分)
TCP三次握手:发送端发送SYN,接收端发送SYN/ACK,发送端再发送ACK。
HTTP通信过程:客户端输入域名,DNS通过域名查找IP地址。HTTP协议生成针对目标WEB服务器的HTTP请求报文。TCP协议将HTTP请求报文分割成报文段,分别添加标记序号和端口号,把每段报文可靠的(三次握手)传给对方。IP协议搜索对方的地址,增加作为通信目的地的MAC地址,一边中转一边传送。服务器端TCP协议将接收到的报文段按序重组成请求报文。HTTP协议对WEB服务器请求的内容进行处理。响应的内容也按相同方式传给客户端。
2.HTTP协议
HTTP协议肯定是先从客户端开始建立通信。对于一条通信路线来说,服务器端和客户端的角色是固定的。
HTTP是无状态协议。
HTTP可以保持TCP连接状态,在建立一次TCP连接后可进行多次HTTP请求和响应。
HTTP管线化:下一次请求不需要等待上一次的响应完成就可以进行。
Cookie进行状态管理:服务器端在响应报文里添加Set-Cookie首部字段,通知客户端保存Cookie,下次客户端往服务器发送请求时,客户端在请求报文添加Cookie首部字段,服务器发现请求报文的Cookie后,检查究竟是哪一个客户端发送来的连接请求,然后对比服务器的记录,最后得到之前的状态信息。
3.HTTP报文
报文分请求报文和响应报文。报文由报文首部+空行+报文主体构成。
请求报文首部:请求行,请求首部字段,通用首部字段,实体首部字段,其他
响应报文首部:状态行,响应首部字段,通用首部字段,实体首部字段,其他
HTTP状态码:1XX信息性状态码,接受的请求正在处理。
2XX成功状态码,请求正常处理完毕。200,204(响应不返回资源)
3XX重定向状态码,需要进行附加操作完成请求。304(服务器资源未改变,可直接使用客户端未过期的缓存)
4XX客户端错误状态码,服务器无法处理请求。403(不允许访问该资源)404(服务器找不到请求资源)
5XX服务器错误状态码,服务器处理出错。500(服务器内部出错)503(服务器处于超负荷或者停机维护)
4.WEB服务器
代理:位于客户端和服务器之间,进行转发。作用:缓存,访问控制,获取访问日志。
网关:接收客户端请求时,把自己当作源服务器处理请求。作用:可以使网关与服务器通信提供非HTTP协议服务。
隧道:对相隔很远的客户端和服务器进行中转,保持双方通信连接。作用:保证安全通信
缓存:代理服务器或者客户端本地保存的资源副本。减少对源服务器的访问,节省通信流量和时间。在判断缓存过期后,要向源服务器确认缓存的有效性。
5.HTTPS
HTTP的缺点:通信不加密,可能被窃听。
通信方身份不验证,可能遭遇伪装。
无法证明报文完整性,可能被篡改。(中间人攻击)
解决办法:使用SSL(安全套接层)和TLS(安全传输协议)对通信进行加密
使用证书查明通信对方的身份
使用证书证明传输数据的完整。
HTTPS:HTTP+加密+认证+完整性保护。
SSL加密方式:共享密钥加密(加密和解密用同一个密钥),处理速度快,但密钥传递过程不可靠。
公开密钥加密(公开密钥加密,私有密钥解密),更安全,但处理速度更慢。
HTTPS使用公开密钥加密方式安全交换稍后共享密钥加密中要使用的密钥,然后使用共享加密方式进行通信。
使用SSL时,HTTPS的处理速度会变慢:SSL通信要消耗网络资源,同时对通信进行处理,使得通信时间延长。SSL做很多加密解密处理,消耗CPU和内存,导致处理速度变慢。
6.用户身份验证
BASIC认证:客户端发送请求,服务器返回状态码401要求认证,客户端发送账号密码。不安全
DIGEST认证:客户端发送请求,服务器返回401要求认证,并发送质询码,客户端发送质询码计算的响应码。不能防止用户伪装。
SSL客户端认证:客户端发送事先安装的证书进行验证,通过后领取证书的公开密钥,开始HTTPS通信
表单认证:通过输入用户ID和密码等登录信息发送至服务端进行验证。
用户将ID和密码发送至服务端后,服务端进行身份验证,将认证状态和SessionID绑定后记录在服务端,并同时在Cookie中返回SessionID给用户端。客户端接收到SessionID后作为Cookie保存在本地,下次发送请求时,SessionID随着Cookie发送给服务端,服务端可以验证接受的SessionID识别用户和其验证状态。
7.基于HTTP的其他协议
WebSocket:使用HTTP建立连接,之后使用专有协议进行通信。
建立连接的时候发起方还是客户端,一旦连接确立,无论客户端还是服务端,都可以直接向对方发送报文。
特点:支持由服务器向客户端推送数据,不必等待客户端的请求。一旦建立连接,可以保持连接状态,减少开销。
8.WEB攻击技术
针对WEB应用的攻击模式:主动攻击,直接访问WEB应用,传入攻击代码。(SQL注入攻击和OS命令注入攻击)
被动攻击,利用圈套策略执行攻击代码。(跨站脚本攻击XSS和跨站点请求伪造CSRF)
XSS:在有安全漏洞的网站用户的浏览器运行非法的HTML标签或者JS脚本。一般在表单中添加特殊字段
SQL注入:针对WEB应用使用的数据库通过运行非法的SQL语句。一般在URI的查询字符串中添加特殊字符
HTTP首部注入攻击(被动):在响应首部字段添加换行添加任意首部字段。
HTTP响应截断攻击:在响应首部添加两个换行符,往报文主体添加内容,并注释原本内容,达到伪造的目的。
CSRF:通过其他网站获取当前浏览器针对某一网站的Cookie中的会话ID,让服务端误以为假冒网站就是当前已认证的用户,进行一些非法操作。
Dos攻击:集中利用访问请求造成资源过载,使服务器停止。
DDos攻击:利用多台计算机发起Dos攻击。