Специальные символы в параметре запроса

Я разрабатываю сервисы весной, и сервисы были развернуты в 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 BAD REQUEST".

Пример 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"/>

Внутри standalone.xml JBOSS.

А также

<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.

Но это не решило проблему.

Есть ли какое-либо решение для этого. Заранее спасибо.

1 ответ

Решение

Вы не должны позволять пользователям самим вводить значения в строку запроса. Это плохая практика и очень рискованная для безопасности вашего веб-приложения. Чтобы избежать подобных атак и ограничить пользователей от несанкционированного доступа к URL, вы должны внедрить в свое приложение инфраструктуру HDIV.

Как только вы реализуете это, никто не может связываться с вашими URL. И если кто-то попытается сделать это, ему будут показаны ошибки "плохой запрос".

Надеюсь, это поможет вам. Приветствия.

Другие вопросы по тегам