瀏覽器同源策略及Cookie的作用域


所謂"同源"指的是"三個相同":

1.協議相同
2.域名相同
3.端口相同

當着三個地方相同才算同源

例如:http://www.example.com:8888/dir/page.html

協議是http://
域名是www.example.com
端口是8888

采用同源策略的目的:是為了保證用戶信息的安全,防止惡意的網站竊取數據。設想這樣一種情況:A網站是一家銀行,用戶登錄以后,又去瀏覽其他網站。

如果其他網站可以讀取A網站的 Cookie,會發生什么?如果 Cookie包含隱私(比如存款總額),這些信息就會泄漏。更可怕的是,Cookie 往往用來保存用

戶的登錄狀態,如果用戶沒有退出登錄,其他網站就可以冒充用戶,為所欲為。因為瀏覽器同時還規定,提交表單不受同源政策的限制。由此可見,"同源政

策"是必需的,否則Cookie 可以共享,互聯網就毫無安全可言了

 

缺點:如果不是同源

(1)Cookie、LocalStorage和IndexDB 無法讀取
(2)DOM無法獲得
(3)AJAX請求不能發送

Cookie的作用域:

Cookie有兩個很重要的屬性:Domain和Path,用來指示此Cookie的作用域:

  Domain告訴瀏覽器當前要添加的Cookie的域名歸屬,如果沒有明確指明則默認為當前域名,比如通過訪問www.vinceruan.info添加的Cookie的域名默認就是www.vinceruan.info,通過訪問blog.vinceruan.info所生成的Cookie的域名就是blog.vinceruan.info

  Path告訴瀏覽器當前要添加的Cookie的路徑歸屬,如果沒有明確指明則默認為當前路徑,比如通過訪問www.vinceruan.info/java/hotspot.html添加的Cookie的默認路徑就是/java/,通過blog.vinceruan.info/java/hotspot.html生成的Cookie的路徑也是/java/

瀏覽器提交的Cookie需要滿足以下兩點:

1.當前域名或者父域名下的Cookie;
2.當前路徑或父路徑下的Cookie

要滿足以上兩個條件的Cookie才會被提交,例如:

當訪問blog.vinceruan.info時

這里需要注意的是:在瀏覽器看來.

www.vinceruan.info不是blog.vinceruan.info的父域名,而vinceruan.info才是blog.vinceruan.info的父域名,

www.vinceruan.info也算是一個二級域名

這點如果你提交過域名到DNS服務器商的應該會知道,一般我們需要顯式提交www.vinceruan.info和vinceruan.info, 否則www.vinceruan.info==vinceruan.info是不成立的

所以如果我們需要在所有二級域名下共享islogin=1的Cookie,用java代碼如下:

如果要在所有的二級域名下的/java/路徑下共享silogin=1的Cookie,用java代碼如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM