【问题标题】:Veracode - Improper Neutralization of Script-Related HTML tags in a Web Page (Basic XSS)Veracode - 网页中与脚本相关的 HTML 标记的不正确中和(基本 XSS)
【发布时间】:2014-05-13 04:11:42
【问题描述】:

我继承了一个遗留应用程序,下面给出了一个 sn-p 代码。

private static void printKeywordCheckboxes(JspWriter out, ArrayList words, int type)
throws IOException {

   LogbookKeyword thisWord;

   Iterator iterWord = words.iterator();
   while (iterWord.hasNext()) {

      thisWord = (LogbookKeyword) iterWord.next();
      out.println("    <input type=\"checkbox\" name=\"keywordCheckbox" + 
         type + "\" value=\"" + 
         thisWord.hashCode() + "\" checked/>" + 
         thisWord.getWord() + "<br>");
   }
}

Veracode 在“out.println()”处抛出异常“网页中与脚本相关的 HTML 标记的不正确中和(基本 XSS)”。

谁能告诉我这个问题应该如何解决?任何帮助将不胜感激。

【问题讨论】:

    标签: java xss veracode


    【解决方案1】:

    网页中与脚本相关的 HTML 标记的不正确中和(基本 XSS)(CWE ID 80)

    描述摘要

    该软件从上游组件接收输入,但它不会清理或错误清理特殊字符,例如“”和“&”,这些字符在发送到时可能被解释为 Web 脚本元素处理网页的下游组件。

    扩展说明

    这可能允许将此类字符视为控制字符,在用户会话的上下文中在客户端执行。虽然这可以归类为注入问题,但更相关的问题是在将这些特殊字符显示给用户之前未能将它们转换为相应的上下文适当的实体。

    public static String encodeHTML(String s)
      {
        StringBuffer out = new StringBuffer();
         for(int i=0; i<s.length(); i++)
          {
           char c = s.charAt(i);
           if(c > 127 || c=='"' || c=='<' || c=='>')  {
             out.append("&#"+(int)c+";");
           }
           else  {
            out.append(c);
        }
    }
      return out.toString();
     }
    

    Is there a JDK class to do HTML encoding (but not URL encoding)?

    【讨论】:

      【解决方案2】:

      另请注意,Veracode 可以识别 Java 中的某些清理功能,这些功能已经过 Veracode 的安全团队的审查和确认。您可以在 Veracode 帮助中心找到此列表。

      【讨论】:

      • 谢谢蒂姆。请告诉我清洁功能或veracode帮助中心的链接。我无法在他们的网站上找到它
      【解决方案3】:

      问题是“单词”被传递给您的方法,但在它们被使用之前没有中和它们 - 单词被“按原样”使用,因此可能包含造成伤害的脚本。有一个很好的描述解释了这个以及为什么它是一个问题:http://www.veracode.com/images/pdf/top5mostprevalent.pdf

      当您生成此 HTML 时,您将需要中和用户输入 - 在将其转换为 HTML 之前确保它是无害的。我的 Java 有点生疏,但 Google 给了我们一些建议:

      阅读此备忘单上的提示:https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

      【讨论】:

        猜你喜欢
        • 2020-03-24
        • 1970-01-01
        • 1970-01-01
        • 2014-09-30
        • 2014-10-23
        • 1970-01-01
        • 2014-03-21
        • 2017-12-17
        • 2018-11-24
        相关资源
        最近更新 更多