本文使用「署名 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