[js]瀏覽器同源策略(same-origin policy)

瀏覽器的同源策略
瀏覽器同源政策及其規避方法html

什麼是同源策略

A網頁設置的 Cookie,B網頁不能打開,除非這兩個網頁"同源"。所謂"同源"指的是"三個相同"。ajax

https:// www.baidu.com: 80
協議相同 域名相同       端口相同
http://www.example.com/dir2/other.html  :同源
http://example.com/dir/other.html       :不一樣源(域名不一樣)
http://v2.www.example.com/dir/other.html:不一樣源(域名不一樣)
http://www.example.com:81/dir/other.html:不一樣源(端口不一樣)

同源策略規定

- 不一樣源cookie不能互相獲取: 保護cookie防止csrf攻擊
- ajax不能異源請求

django的seesion和cookie機制-理解csrf攻擊流程
django處理csrf攻擊的方法django

同源政策的目的

同源政策的目的,是爲了保證用戶信息的安全,防止惡意的網站竊取數據。json

設想這樣一種狀況:A網站是一家銀行,用戶登陸之後,又去瀏覽其餘網站。若是其餘網站能夠讀取A網站的 Cookie,會發生什麼?flask

很顯然,若是 Cookie 包含隱私(好比存款總額),這些信息就會泄漏。更可怕的是,Cookie 每每用來保存用戶的登陸狀態,若是用戶沒有退出登陸,其餘網站就能夠冒充用戶,隨心所欲。由於瀏覽器同時還規定,提交表單不受同源政策的限制。瀏覽器

因而可知,"同源政策"是必需的,不然 Cookie 能夠共享,互聯網就毫無安全可言了。安全

規避同源策略

同源政策規定,AJAX請求只能發給同源的網址,不然就報錯。服務器

除了架設服務器代理(瀏覽器請求同源服務器,再由後者請求外部服務),有三種方法規避這個限制。cookie

JSONP
WebSocket
CORS

參考: ajax-異源請求jsonpsession

同源小結

- 同源是指 https:// www.baidu.com:80
           協議     域名          端口 三元素相同
- 不一樣源cookie不能互相獲取
- ajax不能異源請求(感受這是被掃黃時候誤打了.)

附:
瀏覽器同源策略(same-origin policy)
csrf攻擊防護核心點總結

django的cookie和session操做-7天免登陸
flask操做cookie&django的seesion和cookie機制

相關文章
相關標籤/搜索