历史发展

1990-1995:CERN 托管转为 IETF

W3C

1995: HTML 3.0
1997:HTML 4.0

2000:HTML 4.0 重构成 XHTML 1.0

XHTML 2.0 不兼容 HTML、XHTML 1.0

WHATWG

HTML

脚本的执行

HTML、DOM API 使得脚本无法同时运行其他脚本
workers 在所有浏览环境中串行所有脚本

扩展性

  • class
  • data-*=’’
  • <meta name="" content="">
  • ref=’’
  • <script type=''>
  • embed
  • itemscope=’’ itemprop=’’ (微数据特性)

HTML 使用

DOM 树节点:

DocumentType、Element、Text、Comment、ProcessingInstruction(处理指令)

DOM 树中的每个元素表示为一个对象,对象提供 API,进行操作

安全模型

Web 的安全模型基于‘域’,潜在攻击方式:

不验证用户输入
跨站脚本 XSS
SQL 注入

+ 编写白名单过滤器注意事项
img onload 运行脚本
URL scheme 滥用
base 任何相对连接 script 元素都可能被劫持

跨站请求伪造 CSRF
Clickjacking

脚本 API 使用

  • 事件处理程序内容属性
  • 同一个脚本创建元素和添加事件处理程序
1
2
3
4
5
6
7
8
9
<img src="games.png" alt="Games" onload="gamesLogoHasLoaded(event)">

<script>
var img = new Image();
img.src = 'games.png';
img.alt = 'Games';
img.onload = gamesLogoHasLoaded;
// img.addEventListener('load', gamesLogoHasLoaded, false);
</script>

错误检查

验证器和一致性检查器

公共基础措施

字符编码

一种字节流与 Unicode 字符串的转换,定义在 Encoding 中,编码包含一个编码名称和编码标签