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日志系统以及如何配置它的专家,我访问并阅读了一些材料(thisthis too ..)但找不到指向正确方向的线索(如果有的话.. )。

我已经看过生产中的这个 ServletRequestWrapper 或 ServletResponseWrapper 了吗?,但没有关于如何修改此内部消息的线索。

好吧,谢谢你的一切!

问候

胜利者

4

1 回答 1

1

前两句注释:

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

  2. 最后的“%2”有点可疑,不是吗。

输出看起来像日志输出,实际上我在 Parameters.java 中找到org.apache.juli.logging.Log了。这又是一个Tomcat 日志库,似乎基于 java.util.logging,您可以在WEB-INF/classes/logging.propertiesfor中将级别设置为 FATAL/ERROR org.apache.tomcat.util.http.Parameters=SEVERE

于 2013-01-14T20:48:54.290 回答