首页 » 安全知识库 » WEB安全原理 » 跨站脚本(XSS) » 正文

HTML 跨站脚本攻击(一)

1.描述

    当用户可控数据未经转义或过滤输出到 HTML 中时,用户提交恶意数据后形成 HTML 跨站脚本攻击;HTML 跨站分为反射型和存储型两种,反射型跨站需要被动诱骗点击,而存储型只需要打开页面即可触发危害较大。

    常见的出现此类问题的主要有:留言板、论坛发帖回帖、博客系统和评论系统 。

2.解决方案

2.1在 HTML 中展示用户可控数据,应该进行 html escape 转义

以下是Java和PHP示例

JSP代码
<div>#escapeHTML($user.name) </div>
<td>#escapeHTML($user.name)</td> 所有HTML和XML中输出的数据,都应该做html escape转义。 
PHP代码
<div>htmlentities($row["user.name"])</div> 

2.2 JAVA escapeHTML函数参考esapi实现

https://github.com/ESAPI/esapi-java-legacy/blob/develop/src/main/java/org/owasp/esapi/codecs/HTMLEntityCodec.java

2.3 PHP escapeHTML需要进行html转义规则

转义符号:
& --> &amp;
< --> &lt;
> --> &gt;
" --> &quot;
' --> '

发表评论