1

私はレガシー アプリケーションを継承しており、以下に示すコード スニペットがあります。

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()」で「Web ページのスクリプト関連 HTML タグの不適切な中和 (基本 XSS)」という例外をスローしています。

この問題を修正する方法を教えてもらえますか? どんな助けでも大歓迎です。

4

3 に答える 3

1

問題は、「単語」がメソッドに渡されていることですが、使用される前にこれらが中和されていないことです。単語は「そのまま」使用されるため、害を及ぼすスクリプトが含まれている可能性があります。これとそれが問題である理由を説明する適切な説明があります: 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

于 2014-04-02T09:52:40.780 に答える
0

また、Veracode が Java で認識し、Veracode のセキュリティ チームによって確認および OK された特定のクレンジング関数があることにも注意してください。このリストは、Veracode ヘルプ センターで見つけることができます。

于 2014-04-02T19:56:40.757 に答える