0

我这里有一个情况:我有一个页面<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>

请建议我解决这个问题的方法?任何帮助都深表感谢。

4

1 回答 1

0

因为您在页面中允许标签,所以它被视为漏洞。

而不是写

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

你可以写

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

这将是一个持久的 XSS。

尝试重构您的代码,使其不在数据库中的值中包含任何标签。否则,请确保对数据库中的值进行了清理。

于 2013-07-15T10:07:44.600 回答