【问题标题】:Dealing with logs of CharConversionException in ServletRequestWrapper处理 ServletRequestWrapper 中 CharConversionException 的日志
【发布时间】:2012-12-28 19:41:38
【问题描述】:

我正在使用在 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?,但是不知道如何修改这个内部消息。

谢谢你所做的一切!

问候

维克多

【问题讨论】:

    标签: java servlets tomcat6 catalina.out


    【解决方案1】:

    前两句:

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

    2. 最后的“%2”有点可疑吧。

    输出看起来像日志输出,实际上在Parameters.java中我找到了org.apache.juli.logging.Log。这又一个logging library of Tomcat,似乎基于java.util.logging,你可以在WEB-INF/classes/logging.propertiesorg.apache.tomcat.util.http.Parameters=SEVERE

    【讨论】:

    • 首先非常感谢您提供的信息和答案!。是的,确实,那个 %2 来自一个我们目前无法修改的有缺陷的客户端。我们在 WEB-INF/classes 中没有名为 logging.properties 的文件,但我们可以创建一个并附加该行来控制与该类关联的记录器(参数)。我会试一试,并告诉它是否有效......我猜它必须有效......如果那是正确的记录器:D。谢谢!!
    • 对不起伙计,这没有效果:(.
    • 顺便说一句,在 logging.properties 文件中,我们为每个类配置了日志记录级别。所以 org.apache.tomcat.util.http.Parameters 的实例只会在 sereve 级别记录?跨度>
    • 重要的是要注意我目前正在使用tomcat 6
    • 我看到您正在使用 ServletRequestWrapper。也许您已经对请求进行了转换(UTF-8?),并且包装器再次进行了转换(在 UTF-8 中?)。如果您进行编码,请尝试将其删除或将其设置为类似 Cp1252 之类的无辜内容 - 尝试一下。显示我的班级。
    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多