關於Web的同源政策(Same Origin Policy)

更新於 發佈於 閱讀時間約 5 分鐘
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。
Same-Origin Policy 同源政策是Web Security中安全建立的基礎,用來限制不同網域之間的資源存取權,而這邊指的資源包括程式碼、圖片、影片、html…等。
Same-Origin Policy 主要目的在劃清界限,試想兩個國家之間,基於安全考量,通常不會共享重要資源(軍備、財務…等)吧! 而Same-Origin Policy就是在制定這樣的政策,讓自己的網站自己管,試想,若自己的網站允許被其他網站存取,那麼在你的網站中的重要資訊也很容易被竊取,甚至鑽研漏洞,導致被攻擊,道理就跟國與國之間一樣,必須形成壁壘,保護重要資產。
像這樣的畫面,我們進行網頁開發時是不是常常看到這種狀況? 這就是不同源存取的其中一個例子。

什麼是同源? 又該如何判定?

同源(Origin)主要由以下三個部分組成:
  • Schema: URL的最初始位置,也就是:// 之前的字段,也就是http、https...等協定。
  • Hostname(Domain): 這裡指的就是full domain name。
  • Port: domain name後面接的port, 我們有時候沒有看到port號是因為http預設80 port而https預設為443 port。
上述三個部分只要有其中一個不相符,就屬於不同源,以下用簡單的例子來看看哪些同源,哪些又是不同源?
❓ <https://www.domain1.com>

====================================================================

✅ <https://www.domain1.com/dir1/1.html>

✅ <https://www.domain1.com/dir1/inner/1.html>

❌ <http://www.domain1.com> -> Schema不同

❌ <https://www.hack.com> -> Hostname不同

❌ <https://www.domain1.com:31217> -> Port不同

哪些又是同源的例外?

開發Web應用的過程中,我們常常會嵌入其他網站的圖片、內嵌網頁、影片…等,但問題來了,為什麼這些資源能夠順利的被嵌入呢? 沒錯,事情總有些例外!在某些情況下,跨源是被允許的,如下:
  • 跨來源寫(Cross-origin writes): 連結、重新導向、表單送出。
  • 跨來源嵌入(Cross-origin embedding): <script src=”xxx”>、 <img>、<video>、<iframe>…等嵌入語法。

關於Cookie存取的同源政策

什麼是Cookie呢? 簡單來說就像一張通行證的概念,裡面存有你這個人的識別號碼, 因此通常是認卡不認人,因此很容易發生非本人但拿著識別卡片一樣能進入的狀況。
為什麼會如此呢? 這就得先了解一下Cookie的同源政策,對於Cookie的檢查來說,只要Hostname(Domain)與Path一樣,就會被視為同源,若Cookie有加上一些特別的設定才需要多判斷Schema的部分。
而Cookie的子網域與母網域是共用的,因此有心人士可以在這樣的共用制度下,透過子網域去攻擊母網域,導致安全性議題,後續會談到CSRF,看完之後就能呼籲這篇的概念了。

結語

同源政策的概念非常好,完美的形成壁壘,但總不可能為了完全阻絕攻擊而封閉整個國家吧! 並不是每個想要存取網站的其他來源都是惡意的,而我們有時候也需要串接一些第三方的資源,套用到國與國之間就是邦交國的概念,總會需要一些適度的開放,那開放的同時也需要有一些名單上的限制,另外會衍生哪些安全性議題? 請參考以下的章節預告。

章節預告

資源參考

為什麼會看到廣告
avatar-img
125會員
273內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言
avatar-img
留言分享你的想法!

































































阿Han的沙龍 的其他內容
何謂DAO? 🔔 傳送門: 一起加入Potato Media 共創Web3.0部落格生態圈吧 🔔 去中心化(Decentralized) 自治(Autonomous) 組織(Corporations) DAO與傳統企業不同之處 傳統組織 官僚體系。 程序非公開透明。 權力集中。 去中心化組織
會談這個主題主要是工作上預計進行Pair Programming的模型來開發,因而蒐集了一些關於Pair Programming這方面的相關概念與執行方向,並整理讓大家共同參考、討論。 🔔還沒成為Potato會員的朋友點這裡加入哦,撰寫文章還能挖礦打造被動收入 🔔 優點 提升程式碼品質 缺點
何謂DAO? 🔔 傳送門: 一起加入Potato Media 共創Web3.0部落格生態圈吧 🔔 去中心化(Decentralized) 自治(Autonomous) 組織(Corporations) DAO與傳統企業不同之處 傳統組織 官僚體系。 程序非公開透明。 權力集中。 去中心化組織
會談這個主題主要是工作上預計進行Pair Programming的模型來開發,因而蒐集了一些關於Pair Programming這方面的相關概念與執行方向,並整理讓大家共同參考、討論。 🔔還沒成為Potato會員的朋友點這裡加入哦,撰寫文章還能挖礦打造被動收入 🔔 優點 提升程式碼品質 缺點
你可能也想看
Google News 追蹤
Thumbnail
在忙碌的生活中,許多人會選擇在睡前飲用蛋白質奶昔,希望能幫助肌肉恢復並促進新陳代謝。然而,關於睡前喝蛋白質奶昔的好處和迷思,常常讓人感到困惑。讓我們來看看這個議題,揭開其中的真相。
Thumbnail
Hola!我是C.J,一個熱愛溝通、簡單生活與美肌健康的人。 在這個部落格,我希望透過內容,讓你學會更有效的表達自己、減少家裡不需要的物品,並且打造更健康美麗的自己。 為什麼我要寫這個部落格? 生活的品質,不只是來自於外在環境,更來自於我們與自己、與他人的互動。 我發現,良好的溝通
Thumbnail
「根據世界衛生組織的估計,到2030年時,憂鬱症會成為全球最嚴重的精神疾病之一。」 「在台灣約有200萬人患有憂鬱症」 讀了這段介紹,加上自己生活周遭也遇過憂鬱症患者,所以讓我開始了解憂鬱症真的是需要被重視的。 讀完這本書,你會對憂鬱症有完整的了解,也可以知道要怎麼樣面對和陪伴憂鬱症患者。了
Thumbnail
工作是什麼?要去哪裡找工作? 我該怎麼做,才能擁有夢想工作? 機器人未來會取代人們的工作嗎? 畫畫可以當成工作嗎? 流行音樂歌手會自己寫歌曲嗎? 為什麼會失去工作呢? 要去哪裡找工作? 如果要應徵工作,我們該準備什麼東西? 這真的是一本很有趣的關於「工作」的翻翻書, 如果你
Thumbnail
本文探討LINE私訊的禮貌與效率,並分享避免冒犯他人的技巧。作者以自身經驗說明模糊的開場白與預設立場可能造成反效果,建議直接表明身份與來意,以提升溝通效率並維護良好關係。文中提供實用的開場公式與應對方式,並以頻率、溫度、深度三個面向判斷與對方的關係,以調整溝通策略。
Thumbnail
  自從之前發現被對岸網站盜文,就決定在文章中間或末端加上一些文字聲明。由於我連載的平台有好幾個,所以花了一些時間,把每一個平台的每一篇文全都加上聲明,想藉此查看盜文都是從哪個連載平台盜的﹙雖然本來我心裡就有底了,但總要有證據嘛﹚。   而且,因為怕盜文時設有自動屏蔽、替換功能,我還特地將文字聲明
網路上根源的資料不知從何處來?博士認為是未來人或異世界人。
Thumbnail
之前在【什麼是網路請求(HTTP response)】筆記裡有提到,網路請求遇到 CORS 跨域問題,在開發時可以透過 vite 的反向代理來解決,那麼什麼是反向代理,有反向代理的話是不是也有正向代理呢?
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
Thumbnail
在忙碌的生活中,許多人會選擇在睡前飲用蛋白質奶昔,希望能幫助肌肉恢復並促進新陳代謝。然而,關於睡前喝蛋白質奶昔的好處和迷思,常常讓人感到困惑。讓我們來看看這個議題,揭開其中的真相。
Thumbnail
Hola!我是C.J,一個熱愛溝通、簡單生活與美肌健康的人。 在這個部落格,我希望透過內容,讓你學會更有效的表達自己、減少家裡不需要的物品,並且打造更健康美麗的自己。 為什麼我要寫這個部落格? 生活的品質,不只是來自於外在環境,更來自於我們與自己、與他人的互動。 我發現,良好的溝通
Thumbnail
「根據世界衛生組織的估計,到2030年時,憂鬱症會成為全球最嚴重的精神疾病之一。」 「在台灣約有200萬人患有憂鬱症」 讀了這段介紹,加上自己生活周遭也遇過憂鬱症患者,所以讓我開始了解憂鬱症真的是需要被重視的。 讀完這本書,你會對憂鬱症有完整的了解,也可以知道要怎麼樣面對和陪伴憂鬱症患者。了
Thumbnail
工作是什麼?要去哪裡找工作? 我該怎麼做,才能擁有夢想工作? 機器人未來會取代人們的工作嗎? 畫畫可以當成工作嗎? 流行音樂歌手會自己寫歌曲嗎? 為什麼會失去工作呢? 要去哪裡找工作? 如果要應徵工作,我們該準備什麼東西? 這真的是一本很有趣的關於「工作」的翻翻書, 如果你
Thumbnail
本文探討LINE私訊的禮貌與效率,並分享避免冒犯他人的技巧。作者以自身經驗說明模糊的開場白與預設立場可能造成反效果,建議直接表明身份與來意,以提升溝通效率並維護良好關係。文中提供實用的開場公式與應對方式,並以頻率、溫度、深度三個面向判斷與對方的關係,以調整溝通策略。
Thumbnail
  自從之前發現被對岸網站盜文,就決定在文章中間或末端加上一些文字聲明。由於我連載的平台有好幾個,所以花了一些時間,把每一個平台的每一篇文全都加上聲明,想藉此查看盜文都是從哪個連載平台盜的﹙雖然本來我心裡就有底了,但總要有證據嘛﹚。   而且,因為怕盜文時設有自動屏蔽、替換功能,我還特地將文字聲明
網路上根源的資料不知從何處來?博士認為是未來人或異世界人。
Thumbnail
之前在【什麼是網路請求(HTTP response)】筆記裡有提到,網路請求遇到 CORS 跨域問題,在開發時可以透過 vite 的反向代理來解決,那麼什麼是反向代理,有反向代理的話是不是也有正向代理呢?
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。