0
我的目標是不允許OPTIONS, PUT, DELETE
HTTP方法按照安全測試的建議。Spring HandlerInterceptor不捕獲除GET,POST之外的其他方法
INTRO
我有一個Spring應用程序。我確實有嵌入式彈簧安全。
TRY-1
我試圖在web.xml中添加參考<security-constraint>
- http://www.techstacks.com/howto/disable-http-methods-in-tomcat.html
這是工作,但它提供了無效的響應頭。
RESPONSE
> Status : 403
> Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS
如上所述,允許響應標頭不應該被返回。
TRY-2
於是,我就添加HandlerInterceptor
public class HTTPMethodInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
if (request.getMethod().equalsIgnoreCase("options") ||
request.getMethod().equalsIgnoreCase("put")||
request.getMethod().equalsIgnoreCase("delete")) {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized Request");
return false;
}
return true;
}
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
}
}
編輯
通過
<mvc:interceptors>
<bean class="com.HTTPMethodInterceptor" />
</mvc:interceptors>
這preHandle工作在springConfig註冊爲「GET 「和」POST「方法。但它不適用於該方法的其餘部分。
如果我的理解錯誤,請糾正我。如果重複,請原諒我。
你需要它的所有請求,或者只是某些URL?你如何在Spring上下文中註冊這個'HandlerInterceptor'? – luboskrnac
@luboskrnac我需要它的所有URL。 '/ *'會很棒。編輯註冊問題 –