阻止非CRUD REST动词

时间:2014-02-26 21:14:49

标签: java rest tomcat spring-mvc mapping

我们当前(Spring)Web应用程序中要求仅允许基于CRUD的REST调用(GET,POST,PUT,DELETE)。这是为了防止跨站点脚本攻击等安全扫描,因此我们必须进行这些更改。如果调用不是这些方法之一,我们希望返回类似405的响应。

我们确实将所有的Controller请求方法映射到它们需要响应的特定方法,但是除了那些请求之外的请求返回混合结果。例如,如果我将@RequestMapping定义为GET,但我尝试使用OPTIONS方法调用该服务,则会得到200响应,但是当我使用TRACE调用相同的方法时,我得到405。

我在Spring时相当新,所以我首先尝试从HandlerInterceptorAdapter编写一个自定义拦截器实现,但到那时,上面的两个例子已经被截获,所以这个解决方案不是我们所做的。寻找。

我有什么选择可以用Spring,Java,Tomcat或Apache来实现这个目标?

1 个答案:

答案 0 :(得分:0)

请求也可以映射到OPTIONSTRACEHEAD。实现这些HTTP请求的方法并返回您选择的响应,例如405.检查Spring docs