記錄一些 Web security issues

緣起

今天和 Kytu 大大的交流過程,讓我感到十分羞愧,過去聽過的名詞,在對方的詢問之下,好像都成了新東西,必須要重新 Google 學起似的,這實在讓我感受到非常糟糕啊,決定記錄起來,以示認真!

CORS

跨來源分享資源(CORS) 是一種允許 resources (像是 JS, CSS etc.)對不同 domain 的位置發送請求的機制。

簡單範例

  1. 假設有個網站 http://www.foo.com 嘗試存取 bar.com 網站的 Users’ data,下列的 request header 會被傳到 bar.com

    Origin: http://www.foo.com
    
  2. bar.com 會回送 response 內容如下:

    • 會有個 Access-Control-Allow-Origin (ACOC) 放在 header ,來指出哪些 origin 是被允許存取的:

      Access-Control-Allow-Origin: http://www.foo.com

    • 如果 origin site 沒有在表頭內被允許,則會產生 error

    • Access-Control-Allow-Origin 若以 * 表示,則代表允許所有 domain:

      Access-Control-Allow-Origin: *

Same-origin policy

同源政策(Same-Origin Policy),是在網路應用安全模型下很重要的規範,網站允許在擁有同樣 origin 的狀況下A網頁的 script 可以對B網頁的資料做存取, Origin 被定義為有相同的 URI Schema, hostname 和 port number

JSONP

Proxy

CSRF

reCAPTCHA