我有一个情况:
我有一个页面使用<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">®</span>
请建议我解决这个问题?非常感谢任何帮助。
答案 0 :(得分:0)
由于您在页面中允许使用标记,因此会将其视为漏洞。
而不是写
<span class="sup">®</span>
你可以写
<script>alert("Alert");</script>
这将是一个持久的XSS。
尝试重构代码,使其不包含数据库中值的任何标记。此外,请确保清理数据库中的值。