第九章 基于HTTP的功能追加协议
1. 消除HTTP瓶颈的SPDY(Google 2010),解决性能瓶颈,缩短Web页面加载时间(50%)
- 瓶颈
- 一条连接上只能发送一个请求
- 请求由客户端开始,不能接收响应以外的指令
- 首部未压缩发送, 首部多就延迟大
- 发送冗长的首部,每次互相发送相同首部造成浪费
- 可任选数据压缩格式,非强制压缩发送
- 解决方法
- Ajax(Asynchronous JavaScript and XML, 异步JavaScript与XMl技术)
- 核心技术: XMLHttpRequest的API,更新局部,但依然有大量请求产生
- Comet: 服务端有内容更新, Comet不让请求等待,直接给客户端返回响应
- SPDY的目标: SPDY在TCP/IP的应用层与传输层之间通过新加会话层的形式运作,SPDY规定通信中使用SSL
- HTTP(应用层) -> SPDY(会话层) -> SSL(表示层) -> TCP(传输层)
- 使用SPDY
- HTTP协议可多路复用流,一条TCP连接无限制处理多个HTTP请求;
- 可赋予请求优先级,解决因带宽低而导致响应变慢;
- 压缩HTTP首部;
- 可推送功能;
- 可在服务器提示功能
2. WebSocket网络技术解决HTTP协议问题
- WebSocket是HTML5的一部分(2011),web浏览器与web服务器之间全双工通信标准,主要解决Ajax和Comet里XMLHttpRequest附带的缺陷所引起的问题
(1). WebSocket 协议的主要特点: 推送功能(服务器->客户端); 减少通信量(建立WebSocket连接后一直保持连接状态(握手))
(2). 握手-请求:需要HTTP的Upgrade首部字段,告知通信协议发生改变
(3).握手-响应:请求返回101 Switching Protocols的响应Upgrade: websocket Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== 记录握手过程中必不可少的键值 Sec-WebSocket-Protocol: cchat,superchat 记录使用的子协议
(4).用JavaScript调用"The WebSocket API"Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= 由握手请求发送过来的 Sec-WebSocket-Key字段值生成的;握手成功后确立WebSocket连接后,不再使用HTTP的数据帧, 改用WebSocket独立的数据帧,WebSocket(全双工通信)
3. HTTP/2.0(2014)
特点: 使用速度,通过HTTP/1.1与TCP连接; 集成了SPDY | HTTP Speed+Mobility | Network-Friendly HTTP Upgrade
- 压缩: SPDY,Friendly
- 多路复用: SPDY
- TLS义务化: Speed+Mobility
- 协商: Speed+Mobility,Friendly
- 客户端拉拽(Client Pull)/服务器推送(Server Push): Speed+Mobility
- 流量控制: SPDY
- WebSocket: Speed+Mobility
4. WebDAV
- Web服务器管理文件的WebDAV(web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制),对Web服务器内容直接进行文件复制,编辑等操作的分布式文件系统,拓展HTTP/1.1,代替HTTP/1.1中的PUT和DELETE,安全性更高
第十章 构建Web内容的技术
- HTML(HyperText Markup Language, 超文本标记语言), HTML5
- CSS(Cascading Style Sheets, 层叠样式表), 解耦结构与设计, CSS3
- 动态HTML = DOM + JavaScript
- CGI(Common Gateway Interface, 通用网关接口), 是指Web服务器接收到客户端发送过来的请求后转发给程序的一组机制(接到请求一次就启动一次),Servlet(Java)解决了CGI问题
- XML, 可扩展标记语言, 数据传输
- RSS, 简易信息聚合, 聚合内容, 用XML
- JSON(JavaScript Object Notation),对象表示法,轻量级,数据标记语言,7大类型:false/null/true/对象/数组/数字/字符串
第十一章 Web的攻击技术(HTTP协议缺陷,安全性问题)
- 攻击模式
- 主动攻击(访问Web应用,传入攻击代码): SQL注入, OS命令注入
- 被动攻击(圈套执行): 跨站脚本攻击(XSS), 跨站点请求伪造(CSRF)
- 安全对策
- 客户端验证
- Web应用端(服务器端)的验证: 输入值验证; 输出值转义
- 跨站脚本攻击(Cross-Site Scripting, XSS)
- 利用虚假输入表单骗取用户个人信息
- 利用脚本窃取用户的Cookie值
- 显示伪造的文章或图片
- SQL注入攻击(SQL Injection)指针对Web应用使用的数据库, 通过运行非法的SQL而产生的攻击
影响:- 非法查看或篡改数据库内的数据
- 规避认证
- 执行和数据库服务器业务关联的程序
- OS命令注入攻击(OS Command Injection): 执行非法的操作系统命令达到攻击
- HTTP首部注入攻击(被动攻击); HTTP响应截断攻击(向首部主体内添加内容)
影响:- 设置任何Cookie信息
- 重定向至任意URL
- 显示任意的主体(HTTP响应截断攻击)
- 邮件首部注入攻击
- 目录遍历攻击
- 远程文件包含漏洞(主要是PHP存在的安全漏洞, PHP5.2.0默认无效)
- 因设置或设计上的缺陷引发的安全漏洞:
- 强制浏览
- 不正确的错误信息处理
- 开放重定向
- 因会话管理疏忽引发的安全漏洞
- 会话劫持
- 会话固定攻击
- 跨站点请求伪造(CSRF)
- 其他安全漏洞
- 密码破解: 穷举法; 字典攻击; 彩虹表; 拿到密钥; 加密算法的漏洞
- 点击劫持
- DOS攻击: 服务停止攻击或拒绝服务攻击, 多台计算机同时发起的DOS攻击就是DDOS攻击
- 后门程序