0

私はコードのログ偽造の問題を扱っています:

log.error("リクエスト: " + req.getRequestURL() + "発生" + 例外);

この要素の値 (req.getRequestURL()) は、適切にサニタイズまたは検証されずにコードを通過し、最終的には handleError に監査ログを書き込む際に使用されます。

\n\r 文字を削除しようとしましたが、成功しませんでした。

同じものを検索するさまざまなサイトを調べましたが、役立つコンテンツが見つかりませんでした. 誰でもこれの解決策またはそれを修正するための小さなガイドを説明してください。

ありがとう

4

1 に答える 1

1

ESAPI ライブラリを使用して、ログ偽造攻撃を保護します。コード リファレンスについては、 http: //www.jtmelton.com/2010/09/21/preventing-log-forging-in-java/ を参照して ください。

String clean = message.replace( '\n', '_' ).replace( '\r', '_' );
if ( ESAPI.securityConfiguration().getLogEncodingRequired() ) {
    clean = ESAPI.encoder().encodeForHTML(message);
    if (!message.equals(clean)) {
        clean += " (Encoded)";
    }
}
于 2016-06-14T09:09:49.313 に答える