2017-12-26 15:15:13 +07:00
|
|
|
|
# 1.4.1 HTML 基础
|
|
|
|
|
|
|
|
|
|
- [什么是 HTML](#什么是-html)
|
|
|
|
|
- [HTML 中的标签与元素](#html-中的标签与元素)
|
|
|
|
|
- [HTML 编码](#html-编码)
|
|
|
|
|
- [HTML5 新特性](#html5-新特性)
|
|
|
|
|
|
|
|
|
|
## 什么是 HTML
|
|
|
|
|
|
|
|
|
|
HTML 是用来描述网页的一种语言。
|
|
|
|
|
|
|
|
|
|
- HTML 指的是超文本标记语言 (Hyper Text Markup Language)
|
|
|
|
|
- HTML 不是一种编程语言,而是一种标记语言 (Markup language)
|
|
|
|
|
- 标记语言是一套标记标签 (Markup tag)
|
|
|
|
|
- HTML 使用标记标签来描述网页
|
|
|
|
|
|
|
|
|
|
总的来说,HTML 本身不具有编程逻辑,它是一种将格式与内容分离编排的语言。
|
|
|
|
|
|
|
|
|
|
用户在浏览器端解析的网页大都是由 HTML 语言组成。
|
|
|
|
|
|
|
|
|
|
由于是通过浏览器动态解析,因此可以使用普通文本编辑器来编写 HTML。
|
|
|
|
|
|
|
|
|
|
## HTML 中的标签与元素
|
|
|
|
|
|
|
|
|
|
标签和元素共同构成了 HTML 多样的格式和丰富的功能。
|
|
|
|
|
|
|
|
|
|
HTML 元素以开始标签起始,以结束标签终止。元素处于开始标签与结束标签之间,标签之间可以嵌套,一个典型的 HTML 文档如下:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<html>
|
|
|
|
|
<!-- html文档申明标签 -->
|
|
|
|
|
<body>
|
|
|
|
|
<!-- html文档主体 -->
|
|
|
|
|
Hello World
|
|
|
|
|
<!-- 注释 -->
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 信息隐藏
|
|
|
|
|
|
|
|
|
|
HTML 中的部分标签用于元信息展示、注释等功能,并不用于内容的显示。另一方面,一些属性具有修改浏览器显示样式的功能,在 CTF 中常被用来进行信息隐藏。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
标签
|
|
|
|
|
<!--...-->,定义注释
|
|
|
|
|
<!DOCTYPE>,定义文档类型
|
|
|
|
|
<head>,定义关于文档的信息
|
|
|
|
|
<meta>,定义关于HTML文档的元信息
|
|
|
|
|
<iframe>,定义内联框架
|
|
|
|
|
|
|
|
|
|
属性
|
|
|
|
|
hidden,隐藏元素
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### XSS
|
|
|
|
|
|
|
|
|
|
关于 XSS 漏洞的详细介绍见 1.4.5 节的 OWASP Top Ten Project 漏洞基础。导致 XSS 漏洞的原因是嵌入在 HTML 中的其它动态语言,但是 HTML 为恶意注入提供了输入口。
|
|
|
|
|
|
|
|
|
|
常见与 XSS 相关的标签或属性如下:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<script>,定义客户端脚本
|
|
|
|
|
<img src=>,规定显示图像的 URL
|
|
|
|
|
<body background=>,规定文档背景图像URL
|
|
|
|
|
<body onload=>,body标签的事件属性
|
|
|
|
|
<input onfocus= autofocus>,form表单的事件属性
|
|
|
|
|
<button onclick=>,击键的事件属性
|
|
|
|
|
<link href=>,定义外部资源链接
|
|
|
|
|
<object data=>,定义引用对象数据的 URL
|
|
|
|
|
<svg onload=>,定义SVG资源引用
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## HTML 编码
|
|
|
|
|
HTML 编码是一种用于表示问题字符已将其安全并入 HTML 文档的方案。HTML 定义了大量 HTML 实体来表示特殊的字符。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|HTML 编码|特殊字符|
|
|
|
|
|
|-------|-------|
|
|
|
|
|
| " | " |
|
|
|
|
|
| &apos | ' |
|
|
|
|
|
| & | & |
|
|
|
|
|
| < | < |
|
|
|
|
|
| > | > |
|
|
|
|
|
|
|
|
|
|
此外,任何字符都可以使用它的十进制或十六进制的ASCII码进行HTML编码,例如:
|
|
|
|
|
|
|
|
|
|
|HTML 编码|特殊字符|
|
|
|
|
|
|-------|-------|
|
|
|
|
|
| " | " |
|
|
|
|
|
| ' | ' |
|
|
|
|
|
| " | " |
|
|
|
|
|
| ' | ' |
|
|
|
|
|
|
|
|
|
|
## HTML5 新特性
|
|
|
|
|
|
|
|
|
|
其实 HTML5 已经不新了,之所以还会在这里提到 HTML5,是因为更强大的功能会带来更多意想不到的问题。
|
|
|
|
|
|
|
|
|
|
HTML5 的一些新特性:
|
|
|
|
|
|
|
|
|
|
- 新的语义元素标签
|
|
|
|
|
- 新的表单控件
|
|
|
|
|
- 强大的图像支持
|
|
|
|
|
- 强大的多媒体支持
|
|
|
|
|
- 强大的 API
|
|
|
|
|
|
|
|
|
|
## 参考资料
|
|
|
|
|
|
|
|
|
|
[W3C HTML 教程](http://www.w3school.com.cn/html/)
|
|
|
|
|
|
|
|
|
|
[HTML5 安全问题](http://html5sec.org/)
|