Page 235 - Web性能权威指南
P. 235
14.2 网络安全与沙箱
将个别套接字的管理任务委托给浏览器还有另一个重要的用意:可以让浏览器运用
沙箱机制,对不受信任的应用代码采取一致的安全与策略限制。比如,浏览器不
允许直接访问原始网络套接字 API,因为这样给恶意应用向任意主机发起任意请求
(端口扫描、连接邮件服务器或发送未知消息)提供可乘之机。
• 连接限制
浏览器管理所有打开的套接字池并强制施加连接数限制,保护客户端和服务器的
资源不会被耗尽。
• 请求格式化与响应处理
浏览器格式化所有外发请求以保证格式一致和符合协议的语义,从而保护服务
器。类似地,响应解码也会自动完成,以保护用户。
• TLS协商
浏览器执行 TLS 握手和必要的证书检查。任何证书有问题(比如服务器正在使用
自已签发的证书),用户都会收到通知。
• 同源策略
浏览器会限制应用只能向哪个来源发送请求。
以 上 列 出 的 安 全 限 制 机 制 只 是 一 部 分, 但 已 经 可 以 体 现“ 最 低 特 权 ”(least
privilege)原则了。浏览器只向应用代码公开那些必要的 API 和资源:应用提供数
据和 URL,浏览器执行请求并负责管理每个连接的整个生命周期。
有必要提一句,并没有单独一条原则叫“同源策略”。实际上,这是一组相
关的机制,涉及对 DOM 访问、cookie 和会话状态管理、网络及其他浏览
器组件的限制。
要全面解析浏览器安全,可能需要另外一本书。如果你真想了解这方面
信息,可以看看 Michal Zalewski 的 The Tangled Web: A Guide to Securing
1
Modern Web Applications 。
14.3 资源与客户端状态缓存
最好最快的请求是没有请求。在分派请求之前,浏览器会自动检查其资源缓存,执
行必要的验证,然后在满足限制条件的情况下返回资源的本地副本。类似地,如果
注 1: 中文版《Web 之困:现代 Web 应用安全指南》由机械工业出版社出版。——译者注
222 | 第 14 章