2009-04-13 5 views
0

Nous avons une servlet hébergée sur jboss qui fonctionne sur HttpServletRequest. Mais parfois nous recevons des requêtes qui ne sont pas décodées par jboss, et quand nous obtenons getQueryParam sur HttpServletRequest, nous obtenons null. Le journal d'accès jboss affiche l'URL sous forme codée. Normalement, quand tout fonctionne bien, l'URL est affichée décodée dans le journal d'accès. par exemple:jboss url decoding

Ce fut une demande problématique:

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)' 

Ce fut une demande appropriée:

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)' 

pourrions-nous manque certains paramètres de décodage jboss, ou est-ce juste un cas de malveillant utilisateur?

Répondre

0

Difficile à dire, vraiment.

Le client semble décoder le point d'interrogation en "% 3F" mais pas l'esperluette. Suspicieux, n'est-ce pas? Cela ressemble à un client buggy IMO. Peut-être un javascript non portable, peut-être un bug de réécriture d'URL sur le serveur web, ou une cause plus ésotérique ... un plugin de navigateur qui fonctionne mal.

Pour exclure le javascript non portable, consignez le user-agent et comparez les résultats. Pour exclure un bug de réécriture d'url, connectez-vous au referer. Autant que je le sache, le comportement du décodeur d'URL est codé en dur. Le codage de chaîne peut changer si uri est écrit en non-ascii ou non-iso88591, mais ce n'est pas ce que vous recherchez. Ce qui encode les points d'interrogation mais échoue à encoder les esperluettes m'échappe.

0

Nous avons connecté l'user-agent, il est un peu suspect "XXXagentXXX" dans la plupart des cas, mais un véritable Mozilla (comme ci-dessus) dans d'autres. Le référent est "-" pour toutes ces demandes. Cependant, il y a une chose curieuse que j'ai remarquée aujourd'hui. Nous redirigeons nos requêtes d'apache (80) vers jboss. journal affiche d'accès ci-dessus Apache demande aussi complètement codé:

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)" 

tout journal d'accès jboss a tout sauf% 3F décodé. Maintenant, cela me fait penser que Apache est en train de tout foirer quelque part dans le décodage?