java - XSS 漏洞 <c :out> tags in JSP pages

标签 java jsp xss fortify

当我对我的项目 JSP 页面进行强化扫描时,Fortify 提示更多的 XSS 问题来修复页面。它提示大部分地方,如:<c:out>声明。我尝试使用来自 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 的函数 escapeXml使用 ${fn:escapeXml(path)}但这是按原样打印整个文本。

实际上我的 JSP 中有如下所示的代码。我想修复 <C:out value="${cdt}"/> 的 XSS 漏洞标签。

<c:set var="checked">
    checked="checked"
</c:set>
<c:set var="cdt" value="" />
<c:set var="dbt" value="" />

<c:choose>
    <c:when test="${casesForm.institutionRepresents == 'C'}">
        <c:set var="cdt" value="${checked}"/>
    </c:when>
    <c:when test="${casesForm.institutionRepresents == 'D'}">
        <c:set var="dbt" value="${checked}"/>
    </c:when>
</c:choose>

<div class="field LINK_show">
    <label><bean:message key="label.institutions" /></label>
    <div style="display:inline;padding-left:10px">
    <input type="radio" name="institutionRepresents" value="A" <c:out value="${cdt}" />><bean:message key="label.credit" /> 
    <input type="radio" name="institutionRepresents" value="I" <c:out value="${dbt}" />><bean:message key="label.debit" /> 
    </div>
</div>

有没有办法修复<c:out>中的XSS漏洞?标签?

最佳答案

<c:out>已经进行了 html 转义,但这通常不适合输出属性。如果用户可以控制 cdt ,他们可以修改属性名称或值,或添加额外的属性。像空格这样的字符现在变成了元字符。

虽然您使用它的方式还可以,因为 cdt 的值不能由用户直接操作,而是从安全常量设置。只能是checked="checked"或空。您可以禁用该值的转义,因为您希望将引号直接写为 html。

关于java - XSS 漏洞 <c :out> tags in JSP pages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22351600/

相关文章:

java - SonarQube - 无法执行 Java 命令。访问被拒绝。 (0x5)

php - 转义除 <br> 之外的所有 HTML

java - 在 Java 中使用另一个方法中的变量

java - Weblogic 抛出 CompilationException

java - JSP发送具有html内容的字符串参数

javascript - 使用 jQuery 生成的表填充输入字段

javascript - 这足以防止我的网站上出现 xss 吗?

ruby-on-rails - link_to href 中的不安全参数值

java - 遍历 ArrayLists 的问题

java - Spring JPA REST 一对多