我在春天开发服务,服务部署在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);
我的问题是当我在request参数中传递特殊字符时,它会返回一个有效的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内部。
但这些并没有解决问题。
有没有可用的解决方案。 提前谢谢。
答案 0 :(得分:0)
您不应允许用户自己在查询字符串中输入值。这是一种不好的做法,对您的Web应用程序安全性来说风险很大。为避免此类攻击并限制用户进行网址篡改,您应在应用程序中实施HDIV框架。
一旦实施,没有人可以搞砸你的网址。如果有人试图这样做,那么将向他们显示“错误请求”错误。
希望这会对你有所帮助。欢呼声。