一、第一章 了解Web及网络基础
1.HTTP历史:
1)HTTP/0.9:HTTP于1990问世,当时标准未被正式建立,所以HTTP/1.0之前的版本,统称为HTTP/0.9
2)HTTP/1.0:1996年5月公布,记录于RFC1945,沿用至今
3)HTTP/1.1:1997年1月公布,记录于RFC2616,目前主流版本
4)HTTP/2.0:正在制定中
ps.RFC(Request for Comments),征求修改意见,制定HTTP协议技术标准的文档,不含Cooike
2.TCP/IP协议族:互联网连接协议(protocol),子集有:HTTP、TCP、IP、FTP、PPPoE、FTP等
3.TCP/IP四层模型:
1)应用层:FTP、DNS、HTTP
2)传输层:TCP、UDP
3)网络层:IP
4)链路层:操作系统、硬件驱动、网卡、光纤、硬件部分
PS.经过每层时会打上该层的首部信息,接收时去除
4.ARP协议:HTTP在网络传输时,通过ARP协议就可以解析目标地址,但是过程无法全面掌握,通过路由选择。
5.三次握手:发送SYN的flag->收到请求后回传一个带有SYN/ACK的flag->最后回传一个带有ACK的flag
6.URL是URI的子集,URI包含:Uniform(如http:或ftp:)、Resource(可标示的任何东西)、Identifier(标识符)
二、简单的HTTP协议
1.HTTP中可以使用的方法:GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE、CONNECT
2.持久连接:HTTP/1.1中,所有的连接默认都是持久连接
3.使用Cooike的状态管理
三、HTTP报文内的HTTP信息
1.HTTP报文本身是由多行(用CR+LF作换行符\r\n)
2.HTTP首部内容:请求行、状态行、首部字段、其它
3.报文的内容编码格式有:gzip(GUN zip)、compress(UNIX系统的标准压缩)、deflate(zlib)、identity(不进行编码)
4.分割发送的分块传输编码:用于把实体主体分成多块发送,可以在通信时使用某种传输编码(Transfer Coding)
5.多部分对象集合(Multipart):Content-Type:multipart/form-data[multipart/form-byteranges],使用boundarg字符串来划分每个部分(参见P47、P48)
6.获取部分内容的范围请求:Range:bytes=5001-10000,响应返回206 Partical Content的响应报文
7.内容协商Content Negotiation:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language
四、返回结果的HTTP状态码
1.类型简介:
1XX:信息性状态码,接受的请求正在处理
2XX:成功状态码
204:No Content,请求处理成功,但是没有资源可返回
206:Partial Content,客户端进行范围请求,服务器成功执行了这部分的GET请求
3XX:重定向状态码
301:Move Permanently:URL已更新(永久性的),需要进行书签引用的变更
302:Found,和301类似,但是是临时性的,不需要对书签进行更新
303:See Other,使用GET方法重定向到新的URL上。即使是POST方法访问,也只使用GET方法来做重定向,是和302方法的区别
304:Not Modified,发送附带条件的请求时,如果发生服务器未满足条件的情况,则返回此状态
307:Temporary Redirect:和302类似,但是不会从POST变成GET
4XX:客户端错误状态码,服务器端无法处理请求
400:报文存在语法错误,服务器无法理解。浏览器会像对待200 OK一样对待该状态码
401:Unauthorized,需要认证
403:Forbidden,不允许访问资源,可以在返回主体里描述原因
404:Not Found,服务器资源未找到,也可以在服务器拒绝请求且不想说明原因时使用
5XX:服务器错误状态码,服务器处理请求出错
500: Internal Server Error:服务器在执行请求时出错了
503:Service Unavailable:服务器超负荷或者在进行停机维护
五、与HTTP协作的WEB服务器
1.通信数据转发程序:
1)代理:缓存代理、透明代理(非透明代理)
2)网关:和代理类似,但是可以提供非HTTP协议服务器,如连接数据库、信用卡结算系统等
3)隧道:按要求建立一条与其他服务器的通信线路,使用SSL等加密手段
六、HTTP首部
1.HTTP首部字段类型:(书中有详细说明)
1)通用首部字段
2)请求首部字段
3)响应首部字段
4)实体首部字段
5)非HTTP/1.1首部字段:不在RFC2616中,而是在RFC4229中的47种首部字段,包括Cookie等
七、确保Web安全的HTTPS
1.HTTPS=HTTP+加密+认证+完整性保护
八、确认访问用户身份的认证
1.HTTP使用的认证方式:
1)BASIC认证(基本认证)
2)DIGEST认证(摘要认证)
3)SSL客户端认证
4)FormBase认证(基于表单认证)
2.通常,一种安全的保存密码的方式是,先给密码加盐,再使用散列(hash)函数计算出散列值后保存
九、基于HTTP的功能追加协议
1.为了消除HTTP的瓶颈,出现的解决方案:Ajax、Comet、SPDY(开发中)、WebSocket(HTML5)、HTTP/2.0(制定中)
2.WebDAV:是一个可对Web服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。它作为HTTP/1.1的协议定义在RFC4918中
十、构建Web内容的技术(略)
十一、Web的攻击技术
1.因输出值转义不完全引发的安全漏洞:
1)跨站脚本攻击(XSS)
2)SQL注入攻击
3)OS命令注入攻击
4)HTTP首部注入攻击
5)邮件首部注入攻击
6)目录遍历攻击
7)远程文件包含漏洞
2.因设置或设计上的缺陷引发的安全漏洞
1)强制浏览
2)不正确的错误信息处理
3)开放重定向
3.因会发管理疏忽引发的安全漏洞
1)会话劫持
2) 会话固定攻击
3)跨站点请求伪造(CSRF)
4.其它安全漏洞
1)密码破解
2)点击劫持
3)DoS攻击
4)后门程序