本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 [署名 4.0 国际 (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/deed.zh)
本文作者: 苏洋
创建时间: 2013年04月15日
统计字数: 582字
阅读时间: 2分钟阅读
本文链接: https://soulteary.com/2013/04/15/howto-filter-user-input-in-regular-body-text.html
-----
# XSS事项 如何过滤用户输入页面内的正常内容
接下来我们继续了解如何过滤用户输入页面内的正常内容。 翻译自:[原文出处](http://soulteary.com/redirect?r=https://code.google.com/p/doctype-mirror/wiki/ArticleXSSInBodyText&k=46d9c) VER:`Updated Oct 14, 2011 by ivan@ludios.org` 假设我们有一个模版或者一个表单的HTML片段
```html
**错误: 你请求的内容 '%(query)' 没有找到。**
```
如果攻击者已经可以将请求内容插入到页面中,例如:
```html
```
那么页面中的片段将会呈现为
```html
**错误: 你请求的内容 '' 没有找到。**
```
那么恶意脚本将会执行,例如将无辜的用户的cookies窃取。
## 解决方法
如何插入页面中的字符串必须将下列字符替换为相应的HTML/SGML实体:
* 替换`<` 为 `<`
* 替换`>` 为 `>`
* 替换`&` 为 `&`
* 替换`"` 为 `"`
* 替换`'` 为 `'`
## 基本原理
小于号和大于号需要被转义,因为他们是HTML标签的分隔符,任何标签都逃不过它们,如果它们没有被转义的话(包括`script`标签)浏览器将会解析它们。
```html