[关闭]
@lizlalala 2016-10-20T00:28:30.000000Z 字数 2322 阅读 1045

图解HTTP(二)

http


chapter5 与http有关的web服务器

  1. 为什么请求头中要指定uri
    因现实生活中,有可能一个服务器上部署着多个服务,(虚拟服务器存在)域名不同,那么光有IP是没有用的都会定位到这个服务器,因此需要有指定的uri来唯一识别

  2. 客户端 代理服务器 源服务器
    每次经过代理服务器,都需要写入 via 首部信息到头请求头或者响应头。


chapter6 http首部

chapter6 是http首部字段的一些说明,包括通用首部、请求首部、响应首部、实体首部以及一些没有放到http1.1的rfc里面但很常用的首部字段,包括cookie的一些字段及属性,如set-cookie的secure,httpOnly属性,cookie字段。还有其他的如DNT(do not trace,拒绝个人信息被搜集),p3p(保护用户隐私)的等等。具体可以查看书上的介绍,这部分不再赘述。


chapter7 确保web安全的https

本章是基于http的以下三个缺点展开的:

为什么不加密?因为加密了其实也可能被窃听,只是可能不会被破解而已。

  1. 如何防止被窃听——加密

    • 通信加密:http+ ssl/tls 此处SSL出没
      相当于整个通信信道是安全的。

      ssl:
      secure socket layer 安全套接字
      tls:
      transport layer security 传输层安全协议

    • 内容加密
      此处仅对报文主体,不包括报文首部(请求头(请求行+请求首部))。
      缺点:内容有被篡改的可能。

    内容加密

  2. 如何确认通信方的身份——证书
    不确认通信方的身份,可能会带来若干隐患:

    • 服务器/客户端的伪造、
    • 通信方的权限无法确认、
    • 海量请求接受导致的Dos攻击
      SSL使用了一种被称为证书的手段。证书是有可信第三方颁发,用于确认服务器和客户端是实际存在的,并且证书的伪造极其困难。
      客户端在开始通信前先确认服务器的证书,保证是自己要访问的服务器。
  3. 如何保证通信内容不被篡改——摘要
    现实生活中,请求或者响应在传输过程中是可能被攻击者拦截后进行篡改的,这种就是中间人攻击。通常避免的方法有MD5和SHA-1等hash值校验的方法、数字签名(文件的数字签名可以用PGP来生成)。
    但这些方法都需要客户端的用户去亲自检查验证是否自己下载的文件就是服务器上的文件。
    而且一旦MD5,PGP这些被篡改的话,用户其实也无法发现。

综上,HTTPS可以解决以上三种问题,SSL提供了认证+加密处理+摘要的功能。它可以总结为
HTTPS = HTTP+ 加密+ 认证 +完整性保护


HTTPS

  1. 使用ssl时,就从通常的http与tcp通信变成http->ssl->tcp->ip..


    【注】ssl是独立于http的协议的,其他运行在应用层的SMTP,Telnet等协议都可以与ssl配合使用。

  2. https采取了共享秘钥加密+公开秘钥加密的混合加密方式
    补充知识:

    加密分两种,对称/非对称,ssl采取的是非对称即公开秘钥加密

    对称密钥(共享密钥),即加密解密都用同一个秘钥,缺点在于秘钥必须发送给对方,而传送时有可能就被窃听甚至获取到。

    公开秘钥使用非对称密钥,公钥加密,私钥解密,公钥可以被任意共享。具体来说是,A发送给B,就用B的公钥加密,B收到后用自己的私钥解密
    优点在于安全性得到了极大的保障:

    • 同时获取公钥私钥很困难
    • 即使获得了破解也困难(大素数分解)

    公开密钥加密

    实际中,由于公开秘钥加密很慢,因此https采取了两种方式混合使用的方式,用公开密钥加密的方法去交换接下来在共享秘钥加密方式中的密钥,然后在确保密钥安全的前提下用共享秘钥的方式通信。

    混合加密方式

    问题又来了...当你用公开秘钥加密的方法传输时,你怎么知道这个被你传的就是真正的公开秘钥。
    但是光有不行,因为不能证明公钥本身就是真正的公钥,有可能这个公钥已经被攻击者替换。
    因此,就需要证书来验证。

3.证书

正确的流程是:
服务器:
服务器每次传送,都需要发:
//服务器sendData = 信息+ signature +数字证书。
//signature = md5(信息)+ 服务器私钥加密
//数字证书 = 服务器公钥 + 机构私钥 加密后结果

客户端
客户端拿到以后,用浏览器的机构公钥解密,得到服务器公钥,然后去解谜收到的东西,得到的就是 md5以后的 信息 A。然后将信件本身md5后生成B 。AB进行判断是否相等。就可以看信件是否篡改了。

在这个过程中,先用机构公钥解密验证 身份,再用服务器公钥揭秘再比对实现 篡改验证。

  1. ssl速度
    慢主要包括两种,一种是通信慢,ssl连接时要通信,另一种是,在服务器客户端都要进行加解密的处理,需要消耗CPU及内存资源。
    因此不一直使用HTTPS。

chapter8 确认用户身份的认证

同第七章的证书(服务器认证)不一样的是,这一章是针对客户端的认证,主要包括以下几种,以后几章都用思维导图来总结啦。


chapter9 基于http的追加功能、协议


chapter11 web攻击

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注