2

Tomcat 6 サーバーで実行される webapp を使用しています。一部のリクエスト(特定のタイプのクライアントから送信されたもの)では、ServletRequestWrapper のメソッド getParameter がすべての CharConversionException ロギングを内部的に処理し、その例外に関するサーバー アクティビティ情報の標準出力を出力します。問題は、機密データを (パスワードとして) ログに記録する場合があることです...たとえば、次のようなログを記録できます。

INFO: Character decoding failed. Parameter [pw] with value [holaãã%20%222522%2] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.
java.io.CharConversionException: EOF
    at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:80)
    at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:46)
    at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:410)
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:370)
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:217)
    at org.apache.catalina.connector.Request.parseParameters(Request.java:2647)
    at org.apache.catalina.connector.Request.getParameter(Request.java:1106)
    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:355)
    at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:158)
    at myClasss (myClass.java:666)

クライアントからの問題であり、クライアントが解決する必要があるため、サーバーの問題を解決するつもりはありません。ログに出力される不正なパラメータに関連付けられた値を「非表示」にするのが楽しみです。私はTomcatロギングシステムとその構成方法の専門家ではありませ. )。

私はすでに本番環境でこの ServletRequestWrapper または ServletResponseWrapper を見てきましたか? 、しかし、この内部メッセージを変更する方法についての手がかりはありません.

さて、すべてに感謝します!.

ご挨拶

ビクター

4

1 に答える 1

1

最初の 2 つの注意事項:

  1. 間違ったエンコーディングは厳密にはクライアントの問題ではありません。設定が違うだけです。そこで、いくつかのサーバー設定を指摘させてください。さらに、「サーブレット フィルタの文字エンコーディング」を検索すると、getRequestParameter のリクエスト エンコーディングを正しく設定する ServletFilter がいくつか生成されます。(GET の機能は POST とは異なります!)

  2. 末尾の「%2」が怪しいですね。

出力はログ出力のように見え、実際に Parameters.java で見つかりました。Tomcat のorg.apache.juli.logging.Logこのさらに別のログ ライブラリは、java.util.logging に基づいているようで、WEB-INF/classes/logging.propertiesforでレベルを FATAL/ERROR に設定できますorg.apache.tomcat.util.http.Parameters=SEVERE

于 2013-01-14T20:48:54.290 に答える