在ServletRequestWrapper中处理CharConversionException的日志

时间:2013-01-14 19:36:52

标签: java servlets tomcat6 catalina.out

我正在使用在Tomcat 6服务器中运行的webapp。 对于某些请求(来自特定类型的客户端),方法getParameter of ServletRequestWrapper在内部处理所有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日志记录系统的专家以及如何配置它,我访问并阅读了一些材料(thisthis too ..)但是找不到能指出正确方向的线索(如果有的话......)。

我已经看过这个ServletRequestWrapper or ServletResponseWrapper in production?了,但是没有关于如何修改这个内部消息的线索。

非常感谢你的一切!。

问候

维克多

1 个答案:

答案 0 :(得分:1)

前两个评论:

  1. 错误的编码 严格来说是客户端问题;只有不同的设置。所以请允许我指出some server settings。此外,搜索“servlet过滤器字符编码”将产生一些ServletFilter,它们为getRequestParameter设置请求编码权限。 (GET功能与POST不同!)

  2. “%2”结尾有点可疑,不是吗。

  3. 输出看起来像日志输出,实际上在Parameters.java中我找到org.apache.juli.logging.Log。这又一个logging library of Tomcat,似乎基于java.util.logging,你可以将级别设置为FATAL / WEB-INF/classes/logging.properties {/ 1}}中的/ ERROR。