GIT使用Web

《图解HTTP》

2018-06-19  本文已影响64人  tangyefei

译者序

第1章 了解Web及网络基础

image.png image.png image.png
ftp:// ftp.is.co.za/ rfc/rfc1808.txt 
http://www.ietf.org/rfc/rfc2396.txt 
ldap://[ 2001:db8::7]/c=GB?objectClass?one 
mailto: John.Doe@example.com 

第2章 简单的HTTP协议

第6章 HTTP首部

接上文

通用首部字段

请求首部字段

响应首部字段

实体首部字段

为Cookie服务的首部字段

管理服务器和客户端状态的Cookie虽然没有介入到HTTP/1.1的标准中,但在Web网站中得到了广泛使用,他的机制是用户识别和状态管理,通过使用:

Set-Cookie

其他首部字段

HTTP首部字段可以自行扩展,因此进场会出现各种非标准的首部字段,比如X-Frame-Options, X-Xss-Protection, DNT, P3P。为了跟-标准参数进行区分,通常用X-来跟标准参数进行区分,但在新的规定中提议停止该做法,对于已经使用的前缀,不在要求变更。

第7章 确保Web安全的HTTPS

7.1 内容窃听

通信使用明文(不加密),内容可能会被窃听。TCP/IP协议族的工作机制,通信内容在所有通信线路上都有可能遭窃听,及时信息是加密处理后的,加密处理后的信息本省还是会被人看到的。

防止窃听中最普及的是加密技术,加密对象可有有:

通信的加密

可以通过SSL(Secure Socket Layer)或TLS(Transport Layer Security)组合使用加密通信内容。与SSL组合使用的HTTP被称为HTTPS(HTTP Secure)或HTTP over SSL。

SSL是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化,标准化之后的名称改为 TLS(Transport Layer Security),中文叫做“传输层安全协议”。SSL/TLS可以视作同一个东西的不同阶段。

内容的加密

把HTTP报文里的内容进行加密,客户端需要加密处理后再发送请求。使用的前提是客户端和服务器端同时具备加密和解密机制。

7.2 请求伪装

HTTP请求是不会对通信方进行确认的,任何人都可以发起请求,服务器接收到请求,不管对方是谁都会返回一个响应(服务器端设定了IP地址和端口号例外),因此存在如下隐患:

SSL不仅提供了加密处理,而且他提供了一种称为证书(由值得信任的第三方颁发)的手段,用于确认服务器和客户端是实际存在的。

7.3 请求篡改

因为HTTP协议无法验证报文的完整性,因此响应内容遭到篡改后也没办法获
悉。这种攻击叫做中间人攻击(Man-in-the-Middle attack)。

最常用的是使用MD5 和 SHA-1等散列值校验的方法,以及用来确定文件的数字签名的方法,这些方法不能百分百确定结果正确。

7.4 HTTP+加密+认证+完整保护=HTTPS

HTTPS并非新的协议,而是HTTP通信接口部分用SSL和TLS协议代替而已。即HTTP不再是直接和TCP通信,而是先和SSL通信,再由SSL和TCP通信。运行在应用层的SMTP和Telnet等协议均可以配合SSL协议使用,可以说SSL是当今世界上最广泛的网络安全技术。

公开秘钥加密

近代共享秘钥加密方法(也叫堆成秘钥加密)中,加密算法是公开的,秘钥却是保密的,通过这种方式用以确保加密的安全性。但任何人只要持有秘钥就能解密了因此如何将秘钥安全的转交给对方。

公开密钥加密很好地解决了这个问题,它使用一堆非对称的秘钥,发送密文的一方使用公开秘钥进行加密处理,对方接受到加密的信息以后使用私有秘钥进行解密。这样做的好处是不需要发送用来解密的私有秘钥。

HTTPS通常采用混合加密的机制。因为公开密钥加密的处理与共享秘钥相比,处理速度要慢,因此通常(1)使用公开秘钥安全地交换一些敏感信息,比如后续通信要用到的共享秘钥加密中的秘钥(2)然后使用共享秘钥方式进行通信。

存在的问题

公开秘钥加密还是存在一些问题的,比如无法证明公开密钥本身就是货真价实的。为了解决上述问题,可以使用数字认证机构(CA,Certificate Authority)和相关机构颁发的公开秘钥证书。作为延伸可以了解

7.3 HTTPS安全通信的步骤

image.png

因为步骤的介绍中有,很多新的概念和词汇,这里不做细述,需要用到的时候再自行查看每一步的描述内容。

7.4 SSL的慢

通信慢,因为SSL部分既要消耗网络资源又要对通信进行处理,所以时间上延长了,和使用HTTP相比,网络负载会慢到2到100倍。

处理慢,因为需要涉及客户端和服务端的加密解密处理,需要消耗CPU及内存等资源,导致负载增加。

因为HTTPS安全可靠但慢,所以对于不包含敏感信息的网站,或者不愿意承从认证机构中购买证书的开销的公司,可能只会选择HTTP通信方式。

对于速度慢这一问题,并没有根本性的解决方案,会使用SSL加速器这种专用服务器来改善问题,它为SSL通信的专用硬件,能够提高SSL的运算速度。

第8章 认证

何为认证

为了确认访问者是否有访问系统的权限,需要客户端提供一些能自证身份的信息,核对的信息通畅包含:

HTTPS使用的认证包括如下分类,后面将对分类进行细致介绍

Basic认证

Basic认证的特点

Basic认证的步骤

Digest认证

Digest认证的步骤

SSL客户端认证

经由HTTPS客户端的证书完成的认证方式。需要实现将证书分发给客户端,并且客户端安装了此证书:

通常客户端认证会采取双认证的方式,即用SSL客户端证书来认证客户端计算机,用密码来确定这是用户本身的行为。

基于表单认证

由于便利性和安全性的问题,Basic认证和Digest认证几乎不怎么使用。另外SSL客户端认证虽然具有比较高的安全等级,但因为导入和费用等问题未得到普及。

对于Web网站的认证功能,满足安全级别的标准规范并不存在,所以只好实现基于表单的认证方式,不同的网站有不同的实现方式,如果有充分的考虑可能具有比较高的安全等级。大致步骤是

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

HTTP协议最初创立是当做传输HTML文档的协议,但随着Web应用的功能多样性变化,协议本身存在的限制就开始非常明显,但是因为Web浏览器的使用环境已经遍及全球,因此无法完全抛弃HTTP。可以通过Web应用和脚本程序来满足使用需要,也可以根据HTTP定义新的协议规则。

HTTP的瓶颈主要体现在:

Ajax

利用JavaScript和DOM达到局部页面加载替换的技术手段

Comet

一旦服务端内容有更新,不会让客户端等待,而是直接给客户端返回响应

Spedy

Google在2010年发布的Spedy是为了解决HTTP的性能瓶颈的协议。它尝试在协议级别消除HTTP所遇到的瓶颈。关于它的设计(因为完全没有听闻到使用热度,怀疑都是被废弃的技术了),感兴趣可以参考该书的对应章节。

双工通信Websocket

Websocket协议是基于HTTP建立的协议,建立连接的仍是客户端,一旦建立连接,任何一段都可以直接向对方发送报文。特点有:

实现Websocket通信需要在发给服务器的首部字段中带上Upgrade: websocket,告知服务器通信协议发生改变。在握手/请求时,请求首部带上Sec-WebSocket-Key当键值,响应首部中返回101 witching Protocols的响应表示成功,并带上Sec-Websocket-Key的字段值(基于Sec-WebSocket-Key生成)。成功握手建立连接以后,不再使用HTTP的数据帧,而是采用Websocket独立的数据帧。JavaScript可以调用“The Websocket API”以实现在Websocket协议下进行双工通信。

HTTP2.0

目标是改善用户在使用Web时的体验,是属于改善Web性能的大杀器,只是什么时候广泛使用仍旧是未知,感兴趣可以单独再查询资料。

WebDAV

是一个可直接对Web服务器上内容进行直接复制、编辑等操作的分布式文件系统。

第10章 构建Web内容的技术

内容有些陈旧并且对于前端开发而言都是已经知道的东西,不再赘述。

第11章 Web的攻击技术

1. 针对Web的攻击技术

2. 因输出值转译不安全引发的安全漏洞

-目录便利攻击。是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。
远程文件包含漏洞。是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。

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

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

5. 其他安全漏洞

上一篇 下一篇

猜你喜欢

热点阅读