禁用WebDAV-tomcat(java)

weixin_34162695發表於2018-04-08

 由於要處理一份關於公司的一個公眾使用者網站安全掃描中可能存在的安全性問題。需要禁用WebDAV,或者說是對http中的一些方法的禁用。

WebDAV (Web-based Distributed Authoring and Versioning) 一種基於 HTTP 1.1協議的通訊協議.它擴充套件了HTTP 1.1,在GET、POST、HEAD等幾個HTTP標準方法以外新增了一些新的方法,使應用程式可直接對Web Server直接讀寫,並支援寫檔案鎖定(Locking)及解鎖(Unlock),還可以支援檔案的版本控制。

      HTTP/1.1協議中共定義了八種方法(有時也叫“動作”)來表明Request-URI指定的資源的不同操作方式:

OPTIONS 返回伺服器針對特定資源所支援的HTTP請求方法。也可以利用向Web伺服器傳送'*'的請求來測試伺服器的功能性。

HEAD 向伺服器索要與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情況下,就可以獲取包含在響應訊息頭中的元資訊。

GET 向特定的資源發出請求。注意:GET方法不應當被用於產生“副作用”的操作中,例如在web app.中。其中一個原因是GET可能會被網路蜘蛛等隨意訪問。

POST 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。

PUT 向指定資源位置上傳其最新內容。

DELETE 請求伺服器刪除Request-URI所標識的資源。

TRACE 回顯伺服器收到的請求,主要用於測試或診斷。

CONNECT HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。

  方法名稱是區分大小寫的。當某個請求所針對的資源不支援對應的請求方法的時候,伺服器應當返回狀態碼405(Method Not Allowed);當伺服器不認識或者不支援對應的請求方法的時候,應當返回狀態碼501(Not Implemented)。

  HTTP伺服器至少應該實現GET和HEAD方法,其他方法都是可選的。當然,所有的方法支援的實現都應當符合下述的方法各自的語義定義。此外,除了上述方法,特定的HTTP伺服器還能夠擴充套件自定義的方法。

     http的訪問中,一般常用的兩個方法是:GET和POST。其實主要是針對DELETE等方法的禁用。有兩種方式:

一、修改應用中的web.xml:

    第一步:修改web-app協議


7632097-4ca75fa1af94d774.png
xml程式碼

第二步:在應用程式的web.xml中新增如下的程式碼即可


7632097-0c29be1a26e3d72b.png
web.xml中新增如下的程式碼

二、修改tomcat中conf下的web.xml

     步驟同上。

修改應用中的web.xml就只針對本應用起作用,修改tomcat中的web.xml就可以對啟動在該tomcat下所有的應用起作用。

在未限制DELETE等方法前(即未做上述web.xml的內容的新增之前),測試http的DELETE方法的效果,方式如下:

第一步:

在Tomcat的web.xml 檔案中配置org.apache.catalina.servlets.DefaultServlet的初始化引數


7632097-aaee65e43d1e2271.png
Java程式碼

readonly引數預設是true,即不允許delete和put操作,所以預設的通過XMLHttpRequest物件的put或者delete方法訪問就會報告 http 403 forbidden 錯誤。

第二步:

從客戶端通過 Ajax XMLHTTPRequest 發起 DELETE/PUT 請求,利用AJAX的方式呼叫DELETE,


7632097-ee10c19d7b60cd08.png
Java程式碼

document.write(req.responseText);這一句既是呼叫了Ajax,也是將刪除的test.html返回回來,如果刪除成功,那麼應該看到的是404的效果。

相關文章