關於同源策略(Same-origin policy)
同源策略是Web安全中產生的概念。在這個策略的約束下,瀏覽器可以允許一個頁面中的js程式碼訪問另一個頁面中的資料,但是要求這兩個頁面有相同的源 - 源被定義為 協議(URI scheme)、域名(hostname)和埠號(port number)的組合,比如:http://www.jianshu.com:80
,瀏覽器的實現中通常會省略埠號。
Compared URL | Outcome | Reason |
---|---|---|
http://www.example.com/dir/page2.html | Success | 同源 |
http://www.example.com/dir2/other.html | Success | 同源 |
http://www.example.com:81/dir/other.html | Failure | 埠號不同 |
https://www.example.com/dir/other.html | Failure | 協議不同 |
http://www.abcd.com/dir/other.html | Failure | 域名不同 |
在沒有同源策略的情況下會造成嚴重的問題,比如使用者剛剛訪問了一個銀行網站(沒有退出),然後他有訪問了一個惡意網站,此時惡意網站可能會在後臺執行一個指令碼去訪問銀行網站的資料,讀取Cookie和其它敏感資料。
但是對於一些大型網站來說,同源策略是會限制網站的可能性,大型網站通常會使用多個子域名,這些子域名網頁間的資料共享就會成為問題。有幾種比較流行的方案:
- document.domain 如果網頁的document.domain屬性相同,那麼瀏覽器會認為這是同源的網頁
- Cross-Origin Resource Sharing 瀏覽器和伺服器約定的一種跨源協議
- Cross-document messaging 一個網頁可以通過
postMessage()
向另一個網頁傳送訊息 - JSONP 在Dom中動態插入一個
<script/>
標記請求資料 - WebSockets
相關文章
- 前端基礎技術_瀏覽器同源政策(same-origin policy)及其規避方法前端瀏覽器
- Same Origin Policy 瀏覽器同源策略詳解瀏覽器
- 同源策略
- 同源策略詳解
- JavaScript的同源策略JavaScript
- 同源策略和跨域跨域
- Filter-Policy過濾策略&Route-policyFilter
- 同源策略及其解決方案
- javascript 同源策略及web安全JavaScriptWeb
- 瀏覽器的同源策略瀏覽器
- Backup policy(備份策略)
- 跨域?如何解決?同源策略?跨域
- 同源策略和跨域訪問跨域
- 由同源策略到前端跨域前端跨域
- 簡單弄懂同源政策 (Same Origin Policy) 與跨網域 (CORS)CORS
- puppeteer去掉同源策略及請求攔截
- Browser Security-同源策略、偽URL的域
- 淺聊同源策略的一些基礎
- 也談談同源策略和跨域問題跨域
- 誰知道在websphere中如何配置rmi相關的安全策略檔案(policy)?Web
- 強化學習(十三) 策略梯度(Policy Gradient)強化學習梯度
- Fabric 1.0原始碼分析(39) policy(背書策略)原始碼
- AIX下安裝RAC 關於 reserve_lock(reserve_policy)AI
- 關於nginx HTTP Strict Transport Security (HSTS) Policy Not Enabled 的處理NginxHTTP
- 前端拾遺--http-同源策略和跨域處理前端HTTP跨域
- 瀏覽器同源策略及 Ajax 跨域解決方案瀏覽器跨域
- MicrosoftEdge同源策略不嚴導致任意檔案讀取測試ROS
- WEB應用內容安全策略(Content Security Policy)Web
- 關於 Web 應用的 Prerender 策略Web
- 前端中的同源策略與三種跨域資源共享方法前端跨域
- FE.B-理解瀏覽器的同源策略與跨域方案瀏覽器跨域
- 面試--同源以及規避同源限制的方法面試
- head頭—內容安全策略(Content Security Policy, CSP)
- 再也不學AJAX了!(三)跨域獲取資源 ① - 同源策略跨域
- 關於安全策略的幾點解析
- (C++模板程式設計):策略(policy)技術中的演算法策略與總結C++程式設計演算法
- RAC資料庫administrator managed管理員管理OR policy managed策略管理資料庫
- django2中關於時間處理策略Django