Java Tomcat:Getting';字符解码失败';在日志中;可能的恶意攻击?
我刚刚让一个Tomcat实例停止响应(它在被杀死并重新启动后开始正常工作),在日志消息中,它看起来就在停止响应之前,有人向它发送了无效的请求。以下是日志文件的摘录:Java Tomcat:Getting';字符解码失败';在日志中;可能的恶意攻击?,java,tomcat,filter,tomcat-valve,Java,Tomcat,Filter,Tomcat Valve,我刚刚让一个Tomcat实例停止响应(它在被杀死并重新启动后开始正常工作),在日志消息中,它看起来就在停止响应之前,有人向它发送了无效的请求。以下是日志文件的摘录: [WARNING] [talledLocalContainer] WARNING: Parameters: Character decoding failed. Parameter 'ì°ÅM©2a
[WARNING] [talledLocalContainer] WARNING: Parameters: Character decoding failed. Parameter 'ì°ÅM©2a
7)ýúVßiPÑUÙvPÏB%<kNíR¹YÃÁéIÿ4^ØsZ' with value '' has been ignored. Note that the name and value quoted here may corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.
[WARNING] [talledLocalContainer] Aug 6, 2012 5:23:16 PM org.apache.tomcat.util.http.Parameters processParameters
[WARNING] [talledLocalContainer] WARNING: Parameters: Character decoding failed. Parameter 'ì°ÅM©2a
7)ýúVßiPÑUÙvPÏB%<kNíR¹YÃÁéIÿ4^ØsZ' with value '' has been ignored. Note that the name and value quoted here may corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.
[INFO] [talledLocalContainer] 19:58:04 [InputSanitizerFilter] WARN: Removing potentially malicious parameter from request: batch
[WARNING] [talledLocalContainer] Aug 6, 2012 9:11:39 PM org.apache.tomcat.util.http.Parameters processParameters
[WARNING] [talledLocalContainer] WARNING: Parameters: Character decoding failed. Parameter 'ì°ëñÉÞ
[WARNING] [talledLocalContainer] 8Rû£QÜPÖ◆D)ç£<%E◆<ìS
[WARNING] [├▒┌┌␊␍L⎺␌▒┌C⎺┼├▒␋┼␊⎼] ÎS·Éä:ìAQØRÜ]' ┬␋├ ┴▒┌┤␊ '' ▒⎽ ␉␊␊┼ ␋±┼⎺⎼␊␍. N⎺├␊ ├▒├ ├␊ ┼▒└␊ ▒┼␍ ┴▒┌┤␊ ─┤⎺├␊␍ ␊⎼␊ └▒≤ ␌⎺⎼⎼┤⎻├␊␍ ␍┤␊ ├⎺ ├␊ °▒␋┌␊␍ ␍␊␌⎺␍␋┼±. U⎽␊ ␍␊␉┤± ┌␊┴␊┌ ┌⎺±±␋┼± ├⎺ ⎽␊␊ ├␊ ⎺⎼␋±␋┼▒┌, ┼⎺┼-␌⎺⎼⎼┤⎻├␊␍ ┴▒┌┤␊⎽.A┤± 6, 2012 9:11:39 PM ⎺⎼±.▒⎻▒␌␊.├⎺└␌▒├.┤├␋┌.├├⎻.P▒⎼▒└␊├␊⎼⎽ ⎻⎼⎺␌␊⎽⎽P▒⎼▒└␊├␊⎼⎽
在我看来,等待HTTP守护进程的线程数量异常。尝试以下步骤
编辑conf/server.xml并找到定义标记HTTP连接器的行。它看起来像这样,可能有更多的参数:
<Connector port="8080"/>
将URIEncoding=“UTF-8”属性添加到连接器:
<Connector port="8080" URIEncoding="UTF-8"/>
重新启动Tomcat尝试以下步骤
编辑conf/server.xml并找到定义标记HTTP连接器的行。它看起来像这样,可能有更多的参数:
<Connector port="8080"/>
将URIEncoding=“UTF-8”属性添加到连接器:
<Connector port="8080" URIEncoding="UTF-8"/>
重新启动Tomcat在发送请求之前,您可以尝试使用javascript函数
转义(参数)
。我希望我的回答不会太晚,并且对某人有用。在发送请求之前,您可以尝试使用javascript函数escape(参数)
。我希望我的答案不会太晚,而且对某些人有用。您运行的是什么Tomcat版本?如果这种情况再次发生,可以进行线程转储吗?您是否配置了多个连接器?如果是这样,您可以尝试两个连接器,看看如果再次发生这种情况,它们是否会响应?运行Tomcat 6。我想确切的版本是6.0.26。应该只有一个连接器在运行(服务器设置或多或少都有库存,端口设置为80除外)。我正在使用Cargo Maven2插件实际启动Tomcat并部署我的webapp,如果这有什么区别的话。仅供参考,Tomcat默认情况下也会在8009上启用AJP连接器。好的,问题再次出现,我能够捕获线程转储。那些等待HTTP线程的线程正在等待连接。您确定没有耗尽JDBC连接池吗?C3P0似乎正在等待连接可用。您正在运行哪个Tomcat版本?如果这种情况再次发生,可以进行线程转储吗?您是否配置了多个连接器?如果是这样,您可以尝试两个连接器,看看如果再次发生这种情况,它们是否会响应?运行Tomcat 6。我想确切的版本是6.0.26。应该只有一个连接器在运行(服务器设置或多或少都有库存,端口设置为80除外)。我正在使用Cargo Maven2插件实际启动Tomcat并部署我的webapp,如果这有什么区别的话。仅供参考,Tomcat默认情况下也会在8009上启用AJP连接器。好的,问题再次出现,我能够捕获线程转储。那些等待HTTP线程的线程正在等待连接。您确定没有耗尽JDBC连接池吗?C3P0似乎正在等待连接可用。谢谢,我将尝试一下。在我的例子中,由于我使用Cargo和Maven2来启动服务器,因此通过将UTF-8
添加到我的pom.xml
文件来配置此设置。而且时间也很好,在重新启动服务器后不久,它又收到了另一轮请求。不幸的是,即使使用此设置,它也会抱怨:字符解码失败。参数“ìÃI*]”
3lSù’)Ð6nX\±6$8a@aroth删除pom.xml中的javax.el-api xxx谢谢,我会尝试一下。在我的例子中,由于我使用Cargo和Maven2来启动服务器,因此通过将UTF-8
添加到我的pom.xml
文件来配置此设置。而且时间也很好,在重新启动服务器后不久,它又收到了另一轮请求。不幸的是,即使使用此设置,它也会抱怨:字符解码失败。参数“ìÃI*]”
3lSù’)Ð6nX\±6$8a@aroth删除pom.xml中的javax.el api xxx