2015-11-13 122 views
0

我有一個使用Spring-MVC,Spring-Security開發並託管在Tomcat 7上的Web應用程序。作爲一項安全措施,我還僅在web.xml中列出了某些HTTP方法的白名單,如下所示:刪除「允許」響應標題

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>restricted methods</web-resource-name> 
     <url-pattern>/*</url-pattern> 
     <http-method-omission>GET</http-method-omission> 
     <http-method-omission>POST</http-method-omission> 
     <http-method-omission>DELETE</http-method-omission> 
    </web-resource-collection> 
    <auth-constraint /> 
</security-constraint> 

在這一點上,我會想到的是,如果我做了一個被排除的HTTP方法調用任何端點,然後我會得到一個403響應 - 這設置工作。但403的響應還包括「允許」頭如下:

Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH 
  1. 列入了黑名單選項不支持/推薦的東西嗎?
  2. 爲什麼允許的http方法列表與我配置的不同?
  3. 我假設Tomcat是將Allow頭添加到響應中的那個 - 是嗎?
  4. 如何配置tomcat(或spring,如果是添加頭文件)而不將此頭文件添加到響應中?
+0

我不相信Tomcat的增加了「允許」報頭,除非你得到一個'405方法不Allowed'響應,該HTTP規範* *需要*存在。 –

+0

@ChristopherSchultz - 如果不是tomcat,那麼可以通過Allow頭添加403響應?我的假設是,由於web.xml具有安全約束,tomcat可能是阻止請求的人。那麼它是否仍然會通過春季的過濾器鏈? – ashutosh

+0

如果問題沒有起作用,那麼將其他人標記爲解決問題或評論答案會有幫助。 – Journeycorner

回答

0

你可以把默認值的和而使用白名單,這比你的黑名單的方法更安全:

<headers defaults-disabled="true"> 
    yourheaders... 
</headers> 

微調的documentation可能有幫助。

更新(完全exlude路徑):

<http auto-config="true" security="none"> 
    <intercept-url pattern="/**" method="OPTIONS" /> 
</http> 
+0

那麼Spring是否在這種情況下添加「允許」標題?我會認爲,因爲OPTIONS沒有在web.xml中列入白名單,所以請求甚至不應該彈出... – ashutosh

+0

「請求不應該到春天」 - 我的發佈代碼是關於處理響應頭。要完全忽略spring security的某些方法,請參閱:http://stackoverflow.com/a/32722871/3698894。我添加了一些代碼,不確定它是否工作,因爲我更熟悉java配置。 – Journeycorner

+0

我已經在我的spring安全配置中嘗試了defaults-disabled並且沒有幫助 - 我仍然在響應中獲得「Allow」頭。我不希望「允許」標題成爲響應的一部分,因爲響應具有403狀態碼。 – ashutosh