我使用tomcat8.0.43作为我的服务器。
在查看我的日志时,偶尔会看到:
[...] INFO [...] org.apache.coyote.http11.AbstractHttp11Processor.process 解析HTTP请求标头时出错 注意:进一步出现HTTP 头部解析错误将记录在DEBUG级别。 java.lang.IllegalArgumentException:找到无效的字符 HTTP协议
或者:
java.lang.IllegalArgumentException:找到无效的字符 请求目标。有效字符在RFC 7230和RFC中定义 3986
如果我查看访问日志,我会看到请求产生这些异常的网址如下:
" GET /scripts/index.php?OPT_Session= null" 400
或:
" GET null null" 400
我是否正确识别导致异常被抛出的请求?
我可以做些什么来阻止抛出这些异常或限制这些请求?
普通浏览器甚至不允许客户输入其中包含空格的网址。看来这些请求确实有空格。
感谢。
答案 0 :(得分:3)
请求很可能是攻击。如果您正在运行面向Internet的Web服务器,则必须使用它们。将Apache等Web服务器放在Tomcat前面是很常见的,可能配置了mod_security(https://modsecurity.org)。此外,您可以使用fail2ban或类似的解决方案,以便根据日志中的错误禁用IP。但是,在我最近的经历中,攻击者倾向于使用各种各样的IP地址,因此fail2ban可能不是很有效。