《图解HTTP》读后感2100字
书名:图解HTTP
类型:计算机专业书籍
作者简介 :上野宣,OWASP日本分会会长,TRICORDER株式会社董事长。主要从事安全咨询、风险评估、信息安全教育等工作,著有<今晚我们一起学习邮件协议>、<今晚我们一起学习TCP/IP>、<今晚我们一起学习HTTP>等。
点评:
依稀记得2014年的时候,我曾花费了至少一个星期的时间去系统学习Http的知识,以期待对Http协议有一个全面的认知。一则是因为http协议是一门基础知识,到处会有使用;一则是能够忽悠面试官,不会显得啥都不会。
自以为当时整理的Http知识很全面:有请求报头合适,有响应报头格式,有各种类型的报头以及他们的详细说明,有各种响应状态码及其含义。当然也有考虑到安全的问题,比如Https协议、各种Web攻击等,但是也都是只言片语,写的很浅。
现在读完本书才发现,这本书原来就是我当时希望看到的书,书中所涵盖的内容,比我自己总结的内容更加全面,而且更加浅显易懂。真是相见恨晚,或许这本书在2013年而不是2014年出版,会省去我不少事情。
所有的技术方案都是为了解决特定的问题而存在,问题不在了也就不存在所谓的技术。所以学习技术的首要事情是:了解所面临的问题。
好了,闲话不多扯了,做个笔记,下次看的时候可以更快。
1. http版本
Http于1990年问世,那时的HTTP并没有作为正式的标准被建立。这时的HTTP其实含有HTTP/
1.0之前版本的意思,因此被称为HTTP/0.9。
HTTP正式作为标准被公布是在1996年的5月,版本被命名为HTTP/1.0,并记载于RFC1945。
1997年1月公布的HTTP/1.1是目前主流的HTTP协议版本。
HTTP2.0是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协定。它由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组进行开发。[2]该组织于2014年12月将HTTP/2标准提议递交至IESG进行讨论[3],于2015年2月17日被批准。
2. http各个版本之间的区别
方面HTTP协议的出现主要是为了解决文本传输的难题。
HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。
HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Cookie技术。有了Cookie再用HTTP协议通信,就可以管理状态了。
HTTP主要有这些不足:通信使用明文(不加密),内容可能会被窃听;不验证通信方的身份,因此有可能遭遇伪装;无法证明报文的完整性,所以有可能已遭。Https就是为了解决这些问题而存在。
HTTP+加密+认证+完整性保护=HTTPS。
HTTP标准的瓶颈:
一条连接上只可发送一个请求。
●请求只能从客户端开始。客户端不可以接收除响应以外的指令。
●请求/响应首部未经压缩就发送。首部信息越多延迟越大。
●发送冗长的首部。每次互相发送相同的首部造成的浪费较多。
●可任意选择数据压缩格式。非强制压缩发送
为了解决这些问题就出现了SPDY协议。Http2.0基于SPDY协议实现的。
3. http协议格式
请求报文:请求报头+空行+实体
响应报文:响应报头+空行+实体
请求报头:请求行+报头(请求首部+通用首部+实体首部)
响应报头:响应状态行+报头(响应首部+通用首部+实体首部)
报头首部类型:请求首部、响应首部、通用首部、实体首部
有哪些报头,都什么作用,自己看。
请求方法有哪些自己看
响应状态码有哪些自己看
4. 代理、网关、隧道的区别
代理是黄牛,倒买倒卖,手上沾点油。不改动,服务端一定使用的是Http。比如一般的CDN服务器。
网关是一个人工服务员,对外提供统一的服务,客户不用与各种内部接口人一一对接。网关的上游服务器可能使用的是ftp、mail等非http协议。比如三大电影运营商。
隧道也是一个秘密的暗道,其他人没法窥探里面的内容。比如shadowsocket
5. CA认证机构
https协议会使用非对称加密,但非对称加密中公开密钥存在的身份认证问题,即怎么证明我是我的问题。这个时候就出现了第三者:CA认证机构。所有需要使用数字签名的网站,就把身份认证的事情交给CA来完成。
那么CA认证机构也出现一个尴尬的问题。怎么证明自己是自己的问题。你CA是假的怎么办?那么这个时候的解决办法就是将所有顶级的CA的公钥在浏览器里面都内置一份。对的,每个浏览器在出厂的时候,都会存一些CA认证机构的照片,这样就假不了了。
6. 关于SSL
SSL技术最初是由浏览器开发商网景通信公司率先倡导的,开发过SSL3.0之前的版本。目前主导权已转移到IETF(Internet Engineering Task Force,Internet工程任务组)的手中。
IETF以SSL3.0为基准,后又制定了TLS1.0、TLS1.1和TLS1.2。TSL是以SSL为原型开发的协议,有时会统一称该协议为SSL。当前主流的版本是SSL3.0和TLS1.0
SSL的慢分两种。一种是指通信慢。另一种是指由于大量消耗CPU及内存等资源,导致处理速度变慢。这个就是SSL鸡肋之处。所以Https的使用就需要考虑成本的问题。
7. 服务器端考虑的几个问题
怎么省流量?怎么减少机器资源的消耗?怎么保证缓存一致性?怎么保证可靠性?怎么保证拓展性,保证各个业务分离?简言之,快、稳、省、准。
8. 关于Web完全
There is a door,there is a way!
有和外部交互的地方,那么就存在安全问题的可能。只要外部能够把数据送到你服务端,那么就存在安全风险的可能。具体就可能是怎么把数据送进去的问题了。
有的可能是通过在客户端入手,把私货夹带进入;而有的是路上动手,中间人劫持;还有人是直接在服务端动手,破解你root权限;发一份钓鱼邮件,先送到你内网再说,你点开了,那么这个雷就埋好了。
当然上述都是主动劫持,还有被动劫持。那么就是对用户下手。
发一发钓鱼网站,添加XSS跨域攻击,把用户的信息在不知不觉中上传到黑客的网站上。
当然说的很轻巧,这些都是要找到代码的漏洞,必须熟悉各种方式,然后才能知道会存在哪些bug。这条路很长很长。
差点忘了,我原来还是个程序员~