2012-06-06 109 views
0

我在春季開發服務,服務部署在JBOSS 7.1.0中。對於請求映射 示例代碼:請求參數中的特殊字符

@RequestMapping(value=/state, method=RequestMethod.GET) 
public ResponseEntity<ListStatesResponseVO> getListOfStates(@RequestParam(required=false) Long id, 
                   @RequestParam(required=false) Long page, 
                   @RequestParam(required=false) Long pagesize); 

我的問題是,當我在請求參數傳遞的特殊字符,它返回我一個有效的XML響應,但按照我的理解,它應該返回「400錯誤的請求」。

樣品URI:

http://localhost:8080/location-services/location/api/state?id=$%^$^$#$%^$% 

我還添加了

<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/> 
<property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/> 

在JBoss的standalone.xml。

而且還

<filter> 
    <filter-name>encodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <!-- set forceEncoding to true if you want to override encoding of servlet --> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

web.xml中。

但是這些都沒有解決問題。

是否有任何解決方案可用於此。 在此先感謝。

回答

0

你不應該讓你的用戶自己在查詢字符串中輸入值。這是一個糟糕的做法,對您的Web應用程序安全性非常危險。爲了避免這種攻擊並限制你的用戶進行網址篡改,你應該在你的應用程序中實現HDIV框架。

一旦你實現了,沒有人可以惹你的網址。如果有人試圖這樣做,那麼「不良請求」錯誤將會顯示給他們。

希望這可以幫助你。乾杯。

+0

Thnx的答覆。 – Soutrick

+0

不客氣。如果它真的幫助了你,請接受並點贊答案。 :-) –