0

私は春にサービスを開発しており、サービスはJBOSS7.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応答が返されることですが、私の理解によれば、「400BADREQUEST」が返されるはずです。

サンプル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内。

しかし、これらは問題を解決しません。

これに利用できる解決策はありますか?前もって感謝します。

4

1 に答える 1

0

ユーザーがクエリ文字列自体に値を入力することを許可しないでください。これは悪い習慣であり、Webアプリケーションのセキュリティにとって非常に危険です。このような攻撃を回避し、ユーザーによるURLの改ざんを制限するには、アプリケーションにHDIVフレームワークを実装する必要があります。

一度実装すると、誰もあなたのURLを台無しにすることはできません。そして、誰かがそうしようとすると、「悪いリクエスト」エラーが表示されます。

これがお役に立てば幸いです。乾杯。

于 2012-06-06T07:00:54.113 に答える