【问题标题】:How to fix XSS vulnerabilites如何修复 XSS 漏洞
【发布时间】:2011-11-10 02:18:04
【问题描述】:

我们正在使用 fortify 扫描 java 源代码,它抱怨以下错误:

Method abc() sends unvalidated data to a web browser on line 200, which can result in the browser executing malicious code.

我们在第 200 行有以下代码:

<a href="<%= Util.getProduct(request) %>">Product</a>

而 Util.java hsa 下面的代码在 getProduct 方法中:

String prod = request.getParameter("prod");

谁能告诉我如何修复这个 XSS 漏洞?

谢谢!

【问题讨论】:

    标签: java jsp fortify


    【解决方案1】:

    您需要转义Util.getProduct(request) 的输出。通常这是使用 JSTL 和 &lt;c:out&gt; 标签和 EL 来完成的:

    <a href="<c:out value="${Util.getProduct(request)}"/>" class="left_nav_link">Product</a>
    

    注意您必须使用相当最新的 EL 实现(根据 JSTL or JSP 2.0 EL for getter with argumentParameters in EL methods)才能将参数传递给 getter 方法。


    由于您问题中的代码包含 scriptlet,我将强烈建议您阅读 How to avoid Java code in JSP files? 这个问题涵盖了使用 JSTL+EL 而不是 scriptlet 的原因,如以及有关这两个首字母缩略词实际指代的一些信息。

    【讨论】:

    • 请求后是否有类型)} 额外的右尖括号?
    • 啊不抱歉 - 我实际上错过了一个开放的&lt;,请参阅编辑。
    • 当我在顶部添加 %@ taglib uri="java.sun.com/jsp/jstl/core" prefix="c" %> 时,我收到很多错误,上面写着“acordong to tld or attribute directive in tag文件,属性值不接受任何表达式”....任何线索?
    • c:out 无助于防止 href 值的 XSS;它将 XML 中的某些特殊字符转义为预定义的实体。 You need a combination of URL escaping and verification to prevent XSS via href values
    • @Vineet 你完全正确,我昨晚回答时真的没有想到。您应该发布自己的答案,或者至少编辑我的(如果是前者,我将删除我的)。
    【解决方案2】:

    如果您没有此网站的 JSTL,您可以通过确保只打印有效产品来解决问题:

    public String getProduct( String prod ) throws InputValidationException {
        if (   prod.equals( "myProduct1" )
            || prod.equals( "myProduct2" )
            || prod.equals( "myProduct3" )
            // etc.           
        ) {
            return "/foo/page.jsp?product=" + safeProduct;
        }
        else {
            throw new InputValidationException( "Invalid product key provided." );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2014-12-25
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 2012-06-08
      • 2012-03-10
      相关资源
      最近更新 更多