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

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)”。

有人可以告诉我这个问题应该如何解决吗?任何帮助将不胜感激。

请您参考如下方法:

问题是“单词”被传递到您的方法,但在使用它们之前不会中和它们 - 单词“按原样”使用,因此可能包含造成伤害的脚本。有一个很好的描述解释了这一点以及为什么这是一个问题: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


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!