- DOM同源政策
- Cookie同源政策
DOM同源政策
protocol,host,**port
**組成一份doucument
example:http://google.com/
子域(host)不同,不算同源: https://store.google.com/tw
協定(protocol)不同,不算同源: https://store.google.com/tw/?hl=zh-TW
端口(port)不同,不算同源: http://google.com/
同源標準並非完全限制跨來源存取,以下某些情況允許特例。
特定行為
-
跨來源通常可嵌入資源:
-
- #載入CSS腳本
#載入JS腳本
-
-
跨來源通常可寫入資源:
- 重定向(redirect)
- 連結(links)
- 表單(form)
-
跨來源通常禁止讀取資源:
跨來源請求若從PHP、JSP等等code發送出來,會受到同源政策的限制(Fetch API、XHR)
不難發現雖然HTML tag
可進行嵌入操作,但卻對於javascript、php等等語言進行了一個限制,加固了安全。
從主網域進到子網域時,根據同源政策的定義,這兩個網域屬於跨來源,正常來講會被禁止資源存取,但在Cookie這裡,可能出現了例外,子網域可能能修改主網域的Cookie作回傳。
Cookie同源政策
Cookie需要將儲存的數據回傳Server
host,**path
**只要相同,便被視為同源
特定行為
- 不同源的cookie,return回去會回到各自的主機。
- 經過設定,子網域與主網域的cookie可以共用。
Set-Cookie: name=value; domain=game.com //無法共用cookie
Set-Cookie: name=value; domain=.game.com //可以共用cookie
潛在問題
DOM 的同源政策對於嵌入資源沒有防範,可以用來CSRF。
同源政策沒有限制子網域去修改主網域的cookie。
參考資料:[https://medium.com/程式猿吃香蕉/same-origin-policy-同源政策-一切安全的基礎-36432565a226](https://medium.com/%E7%A8%8B%E5%BC%8F%E7%8C%BF%E5%90%83%E9%A6%99%E8%95%89/same-origin-policy-%E5%90%8C%E6%BA%90%E6%94%BF%E7%AD%96-%E4%B8%80%E5%88%87%E5%AE%89%E5%85%A8%E7%9A%84%E5%9F%BA%E7%A4%8E-36432565a226)