《图解HTTP》学习总结

第一章 了解Web及网络基础

1.Web的出现是为了实现知识共享规划的。最初的设想是,借助多文档之间相互关联形成的超文本,连成万维网(WWW)。

2.WWW构建技术是SGML、HTTP和URL,现在WWW简称为Web。

3.TCP/IP协议族分为四层:应用层、传输层、网络层和数据链路层。传输层对请求报文进行分割和标序,网络层对请求报文增加MAC地址。

4.IP地址通过ARP协议可以解析为MAC地址。

5.TCP的三次握手和四次挥手的图解。三次握手:客户端发送SYN请求,服务器回复SYN/ACK,然后客户端回复ACK,即可建立连接。四次挥手:服务端发送FIN给客户端,客户端发送ACK确认收到,再发送FIN给服务端,服务端返回ACK,即可结束连接。

6.DNS是实现IP地址和域名互相转换的协议。

7.URL是URI的子集。绝对URI的格式包括协议方案名、登录信息(认证)、服务器地址、服务器端口号、带层次的文件路径、查询字符串、片段标识符。

第二章 简单的HTTP协议

1.请求报文包括method、request-URI、protocol version、header fields、entity body。响应报文包括protocol version、status code、reason phrase、header fileds、entity body。

2.HTTP是stateless的协议,需要通过Cookie技术管理状态。

3.HTTP方法有GET(请求资源)、POST(传输实体主体)、PUT(传输文件)、DELETE(删除资源)、OPTIONS(查询支持的请求方法)、TRACE(追踪路径,通过Max-Forwards字段)、HEADER(返回报文头部)、CONNECT(通过隧道协议连接代理,隧道协议即SSL和TLS)。

4.为了节省通信量,进行一次TCP连接后进行多次的HTTP请求称为持久连接,同时并行发送多条请求称为管线化。

5.使用Cookie进行状态管理:客户端发送请求,服务端生成Cookie并记录,在返回报文中将Cookie放入Set-Cookie字段中,客户端收到Cookie则保存下来,下次请求时带着Cookie进行请求,服务器端便知道是哪个客户端发送的请求。

第三章 HTTP报文内的HTTP信息

1.请求报文首部包括请求行、请求首部字段、通用首部字段、实体首部字段、其他首部字段;响应报文首部包括状态行、响应首部字段、通用首部字段、实体首部字段、其他首部字段。

2.内容编码包括Gzip、Compress、Deflate、Identity四种压缩方式。当传输大容量数据时,还可以分块传输编码。

3.邮件可以发送文字和附件,是因为采用了MIME机制。与之类似,我们就可以用多部分对象集合来传递不同类型的数据。其中Content-Type分为multipart/form-data和multipart/byteranges。

4.我们可以使用范围请求来返回206-部分内容。

5.可以使用内容协商返回最合适的内容,内容协商技术包括服务器驱动协商、客户端驱动协商和透明协商。

第四章 返回结果的HTTP状态码

1.响应类别分为1XX-Informational、2XX-Success、3XX-Redirection、4XX-Client Error、5XX-Server Error,1XX表示正在处理请求,3XX表示需要附加操作才能完成请求。

2.200-OK,204-No Content,206-Partial Content,301-Moved Permanently,302-Found,303-See Other(客户端应采用GET获取资源),304-Not Modified,307-Temporary Rediect,400-Bad Request,401-Unauthorized、403-Forbidden、404-Not Found、500-Internal Server Error,503-Service Unavailable。

第五章 与HTTP协作的Web服务器

1.可以通过虚拟主机即虚拟服务器实现同一台物理机搭建多个独立域名。

2.通过代理、网关、隧道,可以配合服务器工作。

3.代理可以进行缓存、实现访问控制、获取访问日志。缓存服务器是代理服务器的一种。使用缓存的代理成为缓存代理,不对报文进行加工的代理称为透明代理,否则为非透明代理。

4.利用网关可以由HTTP请求转化为其他协议通信。通过隧道的传输,可以和远距离的服务器安全通信。

5.缓存可以保存在代理服务器上,也可以保存在客户端本地磁盘,如果缓存过期,则需要到源服务器上请求新的资源。

第六章 HTTP首部

1.HTTP报文包括报文首部、空行(CR+LF)、报文主体。四种HTTP首部字段类型:请求首部字段、响应首部字段、通用首部字段、实体首部字段。

2.HTTP首部字段分为端到端首部字段和逐跳首部字段。

通用首部字段:

1.通用首部字段中的Cache-Control,可以控制缓存的行为,包括public、private、no-cache、no-store、s-maxage、max-age、min-fresh、max-stale、only-if-cached、must-revalidate、proxy-revalidate、no-transform、cache-extension指令。

2.通用首部字段中的Connection可以控制代理不再转发的首部字段和管理持久连接。

3.通用首部字段Date表明创建报文的时间。Pragma是历史遗留字段,意为注解。Pragma:no-cache可以与Cache-Control:no-cache一起使用。

4.通用首部字段Tailer会事先说明报文主体后记录了哪些首部字段。Transfer-Encoding:chunked仅对分块传输编码有效。Upgrade可以用来指定一个完全不同的通信协议。

5.Via是经由之意,常TRACE方法配合使用。Warning字段会告知用户与缓存相关的问题的警告。

请求首部字段:

1.Accept首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。

2.Accept-Charset应用于内容协商机制的服务器驱动协商。

3.Accept-Encoding是告知服务器用户代理支持的内容编码,TE字段也类似。

4.Accept-Language是告知服务器用户代理处理的自然语言集。

5.Authorization常与WWW-Authenticate配合使用,Proxy-Authorization是发生在客户端和代理之间的认证。

6.Expect期待服务器返回100-Continue。

7.From是告知服务器用户代理的电子邮件地址。

8.Host是为了区别在同一个IP上的请求的虚拟主机。

9.条件请求If-Match和If-None-Match是匹配资源的ETag值。

10.条件请求If-Modified-Since和If-Unmodified-Since如果不符合条件,则返回412-Precondition Failed。

11.条件请求If-Range和Range字段配合进行范围请求。

12.Max-Forwards每经过一个服务器,数值减1。

13.Referer是来路之意,是请求的原始资源的URI。

14.User-Agent用于传达浏览器的种类。

响应首部字段:

1.Accept-Ranges告知客户端是否能处理范围请求。

2.Age告知客户端多久之前创建了响应。

3.ETag是资源的唯一标识,分为强ETag值(严格)和弱ETag值。

4.Location会配合3XX:Redirection提供重定向的URI。

5.Proxy-Authenticate是客户端和代理之间的认证。

6.Retry-After是告知客户端在多久之后再次发送请求。

7.Server显示服务器信息。Vary可对缓存返回进行控制。

8.WWW-Authenticate与401-Unauthorized配合使用。

实体首部字段:

1.Allow返回支持的HTTP方法,Content-Encoding是内容编码,Content-Language是实体主体使用的自然语言,Content-Length是实体主体的大小,Content-Location是主体资源对应的URI。

2.Content-MD5是报文主体经过MD5散列函数计算,再经过Base64编码得到的值,其目的在于检查报文传输的完整性。

3.Content-Range是范围请求的响应,Content-Type是实体主体的媒体类型,Expires是资源的失效日期,Last-Modified是资源最近被修改的时间。

其他首部字段:

1.Set-Cookie字段具有expires、path、domain、secure、httpOnly(防止XSS)属性,与Cookie字段配合使用。

2.X-Frame-Options防止点击劫持攻击,可设置仅支持同源。X-XSS-Protection是针对XSS的一种对策。

3.DNT是Do Not Track,拒绝被追踪。P3P字段可以保护用户隐私。

第七章 确保Web安全的HTTPS

1.HTTP由于简单、不加密,因此可能会被抓包或嗅探器工具如Wireshark窃听、伪装和篡改。

2.加密分为用SSL和TLS进行的通信加密和内容加密。

3.解决伪装的方法是使用第三方机构认证的证书。

4.在报文传输途中,可能会遇到中间人攻击,可以用MD5和SHA-1进行散列值校验完整性,以及使用数字签名的方法。

5.HTTP+加密+认证+完整性保护=HTTPS。

6.HTTPS是身披SSL外壳的HTTP。

7.由于共享密钥加密的困境,我们使用非对称加密解决这个问题。

8.HTTPS采用混合加密机制,即用非对称加密传递对称加密所需的密钥。

9.为了证明公钥是货真价实的,我们可以通过数字证书认证机构颁发的公开密钥证书来解决这个问题。

10.服务器把自己的公开密钥登录至CA,CA对其进行私钥加密并颁发公钥证书,服务器给客户端发送公钥证书,客户端得知公钥的真实性后,使用服务器的公钥加密数据发送给服务器,服务器用私钥进行解密。

11.浏览器内部会植入CA的公开密钥。

12.EV SSL证书可确认对方服务器背后运营的企业是否真实存在,防止用户被钓鱼攻击。

13.银行的网上银行使用的是客户端证书,认证机构信誉第一,由自认证机构颁发的证书称为自签名证书,中级认证机构的证书可能会变成自认证证书。

14.HTTPS的应用层发送数据时会附加名叫MAC的报文摘要,从而保护报文的完整性。

15.SSL和TLS有时会统称为SSL。SSL速度慢,因此可以使用SSL加速器,或者在关键的页面才使用HTTPS。

第八章 确认访问用户身份的认证

1.HTTP使用的认证方式为BASIC认证、DIGEST认证、SSL Client认证、FormBase认证。此外,还有Windows统一认证。

2.BASIC认证:用户的ID和密码以Base64方式编码后发送。

3.DIGEST认证:服务器发送质询码,客户端根据质询码和密码串,加上MD5运算,生成响应码。

4.SSL Client认证:需要安装客户端证书,采用证书和密码双因素认证。

5.FormBase认证:常用,使用Cookie管理会话。

6.安全保存密码的方式为给密码加盐,再使用散列函数计算出哈希值后保存。

第九章 基于HTTP的功能追加协议

1.基于HTTP的SPDY协议,可以缩短页面的加载时间,消除HTTP的瓶颈。

2.Ajax只更新部分页面,Comet是延迟应答。

3.SPDY是在应用层和传输层间新加了会话层,规定在通信中使用SSL作为表示层。

4.SPDY具有多路复用流、赋予请求优先级、压缩HTTP首部、推送功能、服务器提示功能等扩展。

5.WebSocket协议是全双工通信的协议,具有推送和减少通信量的功能。

6.HTTP/2.0是基于SPDY和WebSocket协议的下一代HTTP。

7.Web服务器管理文件可以使用WebDAV协议。

第十章 构建Web内容的技术

1.动态HTML是利用JS对Web页面进行的动态改造。

2.可以通过程序动态创建HTML,也可以使用CGI程序和Servlet实现Web应用。

3.XML和HTML都是从SGML简化而成。

4.发布更新信息可以使用RSS/Atom。

第十一章 Web的攻击技术

1.主动攻击是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式,包括SQL注入攻击和OS命令注入攻击。

2.被动攻击是指利用圈套策略执行攻击代码的攻击模式,包括XSS和CSRF。

因输出值转义不完全引发的安全漏洞:

1.XSS是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JS进的一种攻击。

2.XSS包括利用虚假表单骗取用户个人信息,利用脚本窃取Cookie值,显示伪造的文章或图片。

3.SQL注入攻击是针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。

4.OS命令注入攻击是指通过Web应用,执行非法的操作系统命令达到攻击的目的。

5.HTTP首部注入攻击是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击,属于被动攻击模式。

6.向首部主体添加内容的攻击成为HTTP截断攻击。

7.邮件首部注入攻击是指Web应用中的邮件发送功能,攻击者通过向邮件首部To或Subject内任意添加非法内容发起的攻击。

8.目录遍历攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。

9.远程文件包含漏洞是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可以运行任意脚本的一种攻击。

因设置或设计上的缺陷引发的安全漏洞:

1.强制浏览安全漏洞是指,从安置在Web服务器公开目录下的文件中,浏览那些原本非自愿公开的文件。

2.不正确的消息处理的安全漏洞是指,Web应用内的错误信息内包含对攻击者有用的信息。

3.可信度高的Web网站如果开放重定向功能,则很有可能被攻击者选中并用来作为钓鱼攻击的跳板。

因会话管理疏忽引发的安全漏洞:

1.会话劫持是指攻击者通过某种手段拿到了用户的sessionID,并非法使用此sessionID伪装成用户,达到攻击的目的。

2.会话固定攻击会强制用户使用攻击者指定的sessionID,属于被动攻击。

3.CSRF攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态的更新,属于被动攻击。

其他安全漏洞:

1.密码破解攻击可以通过穷举法和字典攻击进行密码试错。

2.从加密数据中导出明文可以使用穷举法、字典攻击、彩虹表、拿到密钥、加密算法的漏洞的方式。

3.点击劫持是指利用透明的按钮或者链接做成陷阱,覆盖在Web页面之上,又称为界面伪装。

4.DoS攻击包括海量请求和攻击安全漏洞使得服务停止的方法,多台计算机发起的DoS攻击成为DDoS攻击。

5.后门程序是指开发设置的隐藏入口。

原文地址:https://www.cnblogs.com/luoyihao/p/15172487.html