Try   HackMD

Http Method(Http方法)介紹 和 跨來源資源共用(CORS)

在瀏覽網頁時,其實會用各種Http方法去與Web伺服器取資料或是送資料,最常見的方法是Get;其次則是Post

兩者對一般人來說最大的差異就是 GET會在網址列上顯示參數,Post不會

但Http的方法其實不只Get和Post,以下有更多說明


HTTP/1.1 協定

HTTP定義了八種方法,以不同方式操作指定的資源:

  • OPTIONS:這個方法可使伺服器傳回該資源所支援的所有 HTTP 請求方法。
    就是詢問這個主機提供哪些 Http 方法讓人使用,但也可以被惡意攻擊者刺探敏感資訊,通常弱點掃描檢測到都會建議關閉此方法
  • HEAD:可以在不必傳輸全部內容的情況下,就可以取得其中「關於該資源的資訊」(元資訊或稱元資料)。
    以 html 來說,都有一塊<head>標題或css等資訊</head>,HEAD就是只取這一塊資料。
  • GET:向指定的資源發出「顯示」請求。使用 GET 方法應該只用在讀取資料,而不應當被用於產生「副作用」的操作中。
  • POST:向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)。資料被包含在請求本文中。
  • PUT:向指定資源位置上傳其最新內容。
  • DELETE:請求伺服器刪除 Request-URI 所標識的資源。
  • TRACE:回顯伺服器收到的請求,主要用於測試或診斷。
  • CONNECT:HTTP/1.1 協定中預留給能夠將連線改為管道方式的代理伺服器。通常用於 SSL 加密伺服器的連結(經由非加密的 HTTP 代理伺服器)。

先導請求 Preflighted requests

javascript允許向目前的網站或外部網站傳送資料,傳送請求到外部網站時,可能會攜帶使用者資料,所以要先進行 先導請求 Preflighted requests
先導請求會先以 HTTP 的 OPTIONS 方法送出請求到另一個網域,確認後續真實請求是否可安全送出。

當符合以下其中一種條件時,會送出先導請求:
1.使用非簡單方法(GET, HEAD, POST)。
2.使用以下類型除外的標頭:Accept, Accept-Language, Content-Language,Content-Type 非為下列 application/x-www-form-urlencoded, multipart/form-data, 或 text/plain 其中一種(上述類型為簡單標頭,且皆不區分大小寫)。例如 POST 請求連帶的資料是 application/xml 或 text/xml 的 XML 類型資料,那麼先導請求就會先送出。 3.請求中有自訂義標頭,例如自訂義一個 X-PINGOTHER 標頭。


CORS

跨來源資源共用(CORS) 是有關於資訊安全的議題,我們可以想一個情況
如果javascript可以任意的修改自己的網頁,也可以在背景執行且隨意地從別的網站擷取資料。
那就可以做出以下攻擊

  1. 做一個 網頁,用 javascript ,擷取
    www.網路銀行.com/輸入帳號密碼的畫面 並且貼到我的網頁上
  2. 輸入帳號密碼按下送出後,把密碼傳回自己的資料庫收藏
  3. 把網址傳給其他人
  4. 如果沒注意到網址不一樣,輸入了正確的帳號密碼,那我就取得正確的帳號密碼了

這樣子用 javascript 輕易地做一個完全相同的假網站,誘使沒注意到網址不同的使用者輸入帳號密碼,幾乎是只要改網址就可以立刻做出多個假網站。為了防止這種情況,網站伺服器需要設定允許 CORS ,才能授權讓跨網站的 javascript 取得資訊。


在 IIS 上設定允許 CORS 跨站請求

  • 選擇要開啟的 IIS 站台
  • 點 HttpResponseHeader(Http回應標頭)

然後有2類情況,如果希望所有網站都可以跨站請求,要使用這個
Access-Control-Allow-Origin
共有2種值:

*    所有網站都可以連
uri  指定的網站才能連 (不允許多組)

X-Frame-Options

如果不要用 javascript,也有另一個 iframe 的方式可以擷取其他網頁,假設不希望自己的網頁被別人用iframe擷取,或是只希望自己的網站可以被

如果要設定同網站才能連,要使用這個
X-Frame-Options
共有三種值:

  • DENY 表示文件無論如何都不能被嵌入到 frame 中,即使是自家網站也不行。
  • SAMEORIGIN 唯有當符合同源政策下,才能被嵌入到 frame 中。
  • ALLOW-FROM uri 唯有列表許可的 URI 才能嵌入到 frame 中。

參考資料

tags: 資安