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

在 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框架。

一旦你实现了,没有人会弄乱你的网址。如果有人尝试这样做,则会向他们显示“错误请求”错误。

希望这对您有所帮助。干杯。

于 2012-06-06T07:00:54.113 回答