2009-04-13 70 views
0

我们有一个servlet托管在jboss上,它在HttpServletRequest上工作。但是有时候我们会接受不被jboss解码的请求,而当我们在HttpServletRequest上获取QueryParam时,我们会得到null。 jboss访问日志以编码形式显示网址。通常情况下,当一切运行平稳时,url会显示在访问日志中解码。 如:jboss url解码

这是一个问题的请求:

127.0.0.1 [13/Apr/2009:14:18:53 +0000] GET /redirectService//%3Fclient_id=3&redirect_url=http%253A%252F%252Fwww.amazon.de%252Fgp%252Fsearch%253Fie%253DUTF8%2526keywords%253DMicrosoft+Office+2007%2526search-alias%253Dsoftware%2526 HTTP/1.1 'null' 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12)' 

这是一个正确的请求:

127.0.0.1 [13/Apr/2009:14:19:37 +0000] GET /redirectService//?client_id=3&redirect_url=http%3A%2F%2Fwww.amazon.de%2Fgp%2Fsearch%3Fie%3DUTF8%26keywords%3DMAGIX+Video+deluxe+2008%26search-alias%3Dsoftware%26 HTTP/1.1 'http://www.google.de/search?hl=de&q=magix+video+deluxe+2008&meta=&aq=3&oq=%22magix%22' 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322)' 

,我们还缺一些JBoss的解码设置,还是仅仅是恶意的情况下,用户?

回答

0

很难说,真的。

客户端似乎将问号解码为“%3F”,但不是“&”符号。可疑,不是吗?这看起来像一个越野车客户IMO。也许是不可移植的JavaScript,也许是Web服务器端的一些URL重写错误,或者是一个更深奥的原因......浏览器插件出现故障。

要排除不可移植的javascript,请记录用户代理并比较结果。排除网址重写错误,记录引用者。

AFAIK,URL解码器行为是硬编码的。如果uri被写入非ascii或non-iso88591,字符串编码可能会改变,但这不是你所追求的。什么编码的问号,但没有编码符号逃避我。

0

我们登录了用户代理,在大多数情况下,这是一些可疑的“XXXagentXXX”,但在其他情况下是真正的Mozilla(如上)。所有这些请求的推荐人都是“ - ”。不过,我今天注意到了一件奇怪的事情。我们将我们的请求从apache(80)重定向到jboss。 Apache访问日志显示上述请求为完全编码:

GET /r/%3Fclient_id%3D3%26redirect_url%3Dhttp%253A%252F%252Fwww.amazon.de%252Fgp%252Fsearch%253Fie%253DUTF8%2526keywords%253DCyberlink%2BPower%2BDirector%2526search-alias%253Dsoftware HTTP/1.0" 400 965 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10)" 

而JBoss的访问日志有一切除%3F解码。现在这让我觉得Apache在解码的某个地方搞砸了?