0

通常、ベラコードを使用してコードの変更をスキャンし、セキュリティの脆弱性を検出します。今、私はと呼ばれる文字列で収集しているDBに文字列がcustFunctionalityあり、以前はこれをjspで次のように表示していました:

out.println(<%= custFunctionality %>);

veracode がそれをスキャンしたところ、セキュリティ上の欠陥であることがわかりました。

だから私はc: outここで次のように使用しました:

<c:out escapexml='false' value='${custFunctionality }'/>

ここでの問題は、文字列が HTML 関連のマークアップと、ページに表示する必要がある特殊文字で構成されていることですescapexml='false'。これらの文字を指定しないと、マークアップが実現しません。ただし、escapexml='false'コードには文字列が含まれているため、ファイルを再スキャンした後に発見したように、これは veracode のセキュリティ上の欠陥を構成します。

この泥沼から別の解決策を提案してくれる人はいますか?

4

1 に答える 1

0

あなたが求めているのは2つの異なるものです。特殊文字を取得してユーザーに視覚的に表示するのは、かなり簡単です。それらをマークアップとして安全にページに挿入することは、より複雑です。

ビジュアル表示:

ここでやりたいことは、ブラウザがマークアップとして解釈したい特殊文字を取得し、それを表示する必要があることをブラウザに示す方法でエスケープ (またはエンコード) することです。Alex は、それを行うのに役立つ StringEscapeUtils を推奨しました。(各コンテキストには独自のエスケープ規則があるため、html で機能するものが必ずしも css や javascript で機能するとは限らないことに注意してください。)

マークアップの挿入:

この場合、入力の検証を行って、ページの動作に影響を与えるコンテンツを挿入していないことを確認する必要があります。いくつかの...マークアップを挿入することはおそらく問題ありませんが、javascript を挿入することは危険です。課題は、人々がフィルターを回避しようとする可能性のあるすべての方法をキャッチすることです。あなたのサイトが十分に興味深いものであれば、人々はこの機能を利用しようとします。

于 2013-07-03T16:34:50.410 に答える