XSS错误:如何防止这种情况?

时间:2013-07-15 09:59:56

标签: java jsp jstl xss veracode

我有一个情况: 我有一个页面使用<c:out>显示来自DB的数据,其中内容有一些特殊字符作为注册商标。我在我的代码中使用java,jsp,jstl。 注册商标符号显示为:

®

进口非常完美,如:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

如果我使用下面的代码打印,它会显示正确的注册标记,但问题是,它会导致安全违规。

 <c:out escapeXml="false" value="${prName}"/>

我使用veracode扫描我的代码,因为我在这里给出了escapeXml="false",veracode指出这是一个漏洞。

因此,当我删除escapeXml时,它会显示为:

 <span class="sup">&reg;</span>

请建议我解决这个问题?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

由于您在页面中允许使用标记,因此会将其视为漏洞。

而不是写

<span class="sup">&reg;</span>
你可以写

<script>alert("Alert");</script>

这将是一个持久的XSS。

尝试重构代码,使其不包含数据库中值的任何标记。此外,请确保清理数据库中的值。