2012-06-06 3 views
0

저는 봄에 서비스를 개발 중이며 서비스는 JBOSS 7.1.0에 배포되었습니다. 요청 매핑을위한 샘플 코드 : I 요청 매개 변수에 특수 문자를 통과 할 때요청 매개 변수의 특수 문자

@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

을 추가했습니다.

그리고 web.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> 

.

그러나 이것으로는 문제가 해결되지 않습니다.

해결 방법이 있습니까? 미리 감사드립니다.

답변

0

사용자가 쿼리 문자열 자체에 값을 입력하도록 허용해서는 안됩니다. 나쁜 습관이고 웹 애플리케이션 보안에 매우 위험합니다. 이러한 공격을 피하고 사용자가 URL을 변경하지 못하게하려면 응용 프로그램에 HDIV 프레임 워크를 구현해야합니다.

일단 구현하면 아무도 내 URL을 어지럽 힐 수 없습니다. 누군가가 그렇게하려고하면 "잘못된 요청"오류가 표시됩니다.

희망이 도움이됩니다. 건배.

+0

답변을위한 Thnx입니다. – Soutrick

+0

당신은 오신 것을 환영합니다. 그것이 정말로 당신을 도운다면 대답을 받아 들여 upvote하십시오. :-) –