HTTP Method(HTTP方法),是HTTP中定義了一組能令給定資源(URL),
執行特定操作的請求方法(request methods)。他們儘管屬於名詞,
但也能稱為 HTTP Verb(HTTP動詞)。每個方法都有不同的用途用意。
可以參考MDN的解釋
https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Methods
聽起來是有點抽象,比較白話一點的說法,
HTTP Method應該可以說是你想要對這個資源(URL)做甚麼樣的操作。
HTTP 有定義了幾種標準化方法 (standardized method),
分別是GET、POST、PUT、DELETE、HEAD、CONNECT、OPTIONS、TRACE。
(注意,這些只是標準方法,實際上的HTTP Method有很多種,雖然很多很少見),
GET:向指定的資源發出「顯示」請求。
POST:向指定資源提交資料,並且Body中可帶傳輸的資料。
PUT:上傳或取代指定的資源。
DELETE:刪除指定的資源。
HEAD:與GET相似,但只會取得標頭與HTTP狀態。
CONNECT:通常用在Proxy。
OPTIONS:回傳這個伺服器支援的所有HTTP Method。
TRACE:回傳收到的請求內容。
常見的HTTP Method為GET與POST,
最佳安全實務上也建議僅開啟GET與POST就好。
而我們在滲透測試時,某些時候需要進行注入的測試,
要確認是否會接受GET與POST的參數的攻擊payload時,
就會需要改變請求的請求的方法,
這時候 Change reuqest method 就派上用場了~
可以幫我們自動轉換GET與POST,請求的數據位置也會自動更換。
算是一個不錯便利的小小功能。
再來提提其他的HTTP Method,
HTTP Method不僅是滲透測試中必測項目之一,
目前大多數的網站弱點掃描工具,也都會測試。
HEAD也是常見伺服器會開啟的Method,
雖然實際上使用者在操作時不太會出現這個方法,
這個方法雖然沒被特別建議開啟,但實際上並無甚麼風險,
只是進行有些掃描工具或是路徑猜測工具會使用這個方法去列舉。
OPTIONS與TRACE目前來說,其實也並非具有風險的方法,
勉強說來算是低風險,但是一般來說會比建偏向建議關閉,
OPTIONS可以讓攻擊者知道你的伺服器開啟了哪些方法,
(不過也有很多都是騙人的就是了)
而TRACE則有可能存在XST攻擊,但現在瀏覽器基本上都會阻擋了。
(但老實說,你用不到就關掉它阿阿!)
而PUT與DELETE這兩個方法,正常是絕對建議要關閉的。
一般的網站基本上是不應該開啟這兩項方法的,
目前來說比較會見到的情況可能是API會使用到。
今天介紹就到這邊啦~
希望大家對HTTP Method的用途與測試有基本認識。
本系列的文章為作者參與第 12 屆 iT 邦幫忙鐵人賽的文章修改
原文連結 https://ithelp.ithome.com.tw/users/20114110/ironman/3806