【问题标题】:Checkmarx Reflected Xss in JSP fileJSP 文件中的 Checkmarx 反射 Xss
【发布时间】:2023-01-22 19:00:14
【问题描述】:

在 Spring Boot 项目中,我正在使用 checkmarx,当 checkmarx 扫描我的项目时 - 它表明在我的项目中,我在多选标记的 JSP 文件中反映了 xss 问题

<select name="${c}" id="${c}" data-parent="${param.c}" data-cascaded="true" multiple="multiple" class="select-dropdown-menu">
                    <c:forEach items="${cd.get(c)}" var="value">
                        // My Rest of the code
                    </c:forEach>
</select>

并且它还在下面的行中显示了反映的 XSS 问题

<script>utility('${param.c}')</script>

如何解决这个问题?

【问题讨论】:

    标签: java jsp checkmarx


    【解决方案1】:

    此 JSP 代码中可能存在漏洞,因为它似乎在 data-parentutility 属性中使用用户提供的输入(存储在 param.c 变量中),而没有先对其进行正确清理。这可能允许攻击者将恶意代码注入页面,或以意想不到的方式操纵 utility 函数的行为。此外,从提供的代码中不清楚 ${cd.get(c)}${c} 变量的来源以及它们是否经过适当的清理。

    清理用户提供的输入对于防止任何类型的注入攻击(包括 XSS)至关重要。有几种方法可以在 JSP 中清理输入:

    1. 输入验证:这涉及根据一组预定义的规则或约束检查用户提供的输入。这可以使用正则表达式或根据允许字符列表检查输入来完成。
    2. 逃离:这涉及将输入中的任何潜在危险字符转换为相应的 HTML 实体,以便它们不会被浏览器解释为代码。
    3. 编码:这涉及将输入转换为可在应用程序中安全使用的不同格式。这可以使用 Base64 编码等功能来完成。
    4. 使用库:有几个可用的库可以帮助进行输入验证和清理,例如 Apache Commons Validator、JSoup 和 OWASP Java Encoder Project。

      重要的是要注意,具体的清理方法将取决于使用用户提供的输入的上下文及其包含的数据类型。最好查阅 OWASP 十大漏洞和 OWASP 指南以获取更多详细信息。

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 2019-08-27
      • 1970-01-01
      • 2022-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多