2009-04-13 69 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在解碼的某個地方搞砸了?