国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

關于cookie跨域的一些個人經驗實錄

2024-05-04 21:49:38
字體:
來源:轉載
供稿:網友

最近在工作中小組到一個cookie跨域設置的問題,然后就一些知識點進步了梳理,然后到網上搜索這方面的資料。本來這些都是一些基礎知識,但是網上很多資料參差不齊,有的錯誤的文章來被轉了很多次,所以我自己通過測試來整理這些問題。

第一個:cookie的setDomain屬性到底能不能設置成當前應用程序所在的域之外的域名。比如我當前應用的域名是:www.test1.com,那么我在當前的應用里設置cookie的Domain為".test2.com",會有什么效果?瀏覽器會不會接受服務器返回來的cookie?假如瀏覽器真的接受了服務端返回的cookie,那么瀏覽器下次真的訪問www.test2.com時到底會不會把之前的cookie給帶上?//開源軟件:Vevb.com

現在我寫了兩個web程序,每個web程序都有一個servlet,同時修改host文件,第一個應用的域名是:www.test1.com,第二個域名是:www.test2.com。并且使用火狐貍和IE10來做測試,測試過程如下:

1)首先在www.test1.com的程序中設置cookie的domain為“.test2.com”,訪問該應用,在這種情況下IE和火狐貍的瀏覽器都會接受cookie,而且其Domain很明確是.test2.com,這里就說明cookie是可以寫到瀏覽器里的,而不是很多地方說的被忽略云云。但是如果再次訪問的時候,無論是訪問www.test1.com或者是www.test2.com都不會把這個cookie帶過去。這就驗證了cookiede setDomain這個方法是不能設置當前應用所在域之外的域名的,之前看到很多文章說的結論是在www.test1.com的應用中設置cookie的domain為www.test2.com,則訪問www.test2.com時就能在test2.com的應用中取到該cookie,這完全是不負責任的扯淡,那種情形只適合共同根域名的情況。辯證想一想都不可能,否則我就能操縱百度或者阿里的網站來讀取我們自己定義的cookie?

2)現在我們設置www.test1.com的域名為自己,那么如果我們在www.test1.com的網頁中使用Iframe嵌入www.test2.com的應用,那么會是什么結果?

首先我們訪問了www.test1.com,這個時候www.test1.com和www.test2.com的cookie都寫到瀏覽器里了,無論是在IE還是在火狐貍里都是如此,那么再次訪問www.test1.com的時候,IE和火狐貍這個時候不同的地方就顯示出來了。這個時候IE只會把www.test1.com的cookie帶上,而不會帶www.test2.com的cookie的(也就是說在www.test2.com的應用里是拿不到cookie的),而且這個時候你再次專門訪問www.test2.com也不會拿到之前明明已經寫入到瀏覽器里www.test2.com域名下的cookie。而如果在火狐貍里,則www.test1.com的應用中會取到www.test1.com的cookie,而且無論是iframe內嵌或者直接訪問www.test2.com的應用里都會拿到自己域名下的cookie。這種情況使用<img>和<script>標簽獲取cookie是一樣的道理。這樣看來IE10的安全級別更高。

3)如果我們非要www.test1.com中利用iframe內嵌www.test2.com的方式來將test2.com域名下的cookie帶過去給www.test2.com服務應用,那該怎么辦?

這個非常簡單,設置www.test2.com的head,比如response.setHeader設置P3P。關于P3P協議網上資料一大堆,大家可以自己看看。這里要注意,我們在www.test1.com使用iframe嵌入www.test2.com的應用,則www.test1.com設置的cookie就是通常意義的第一方cookie,而www.test2.com的cookie就是常說的第三方cookie,我們要設置P3P是要在第3方的程序中設置,這個很多資料里也沒有說明白。其實就是www.test2.com的服務端和瀏覽器協商,讓瀏覽器允許其攜帶上cookie給服務端。一旦突破這點,再結合referer首部屬性就能獲取用戶的瀏覽習慣和喜好,像經常購買書籍、電子產品等。比如:A網站嵌入了B網站的一個頁面,并且B網站設置了P3P,那么當用戶訪問A網站的時候會順便訪問B網站,這個時候B網站就隨機生成一個ID,將這個ID寫入到cookie,并將這個id和referer信息存入自己的數據庫。下次,無論是C網站或者其他網站內嵌了B,被用戶訪問了,也或者是用戶又訪問A,都會順便訪問B網站并且將referer和id存入數據庫,如果用戶用的是同一個瀏覽器并且從來不清理cookie,這樣cookie中記錄的id就不變,每次訪問就會把B的cookie帶上,B網站根據cookie中的id和多次存入數據庫的referer就能知道你都登錄了哪些網站。因為referer的鏈接說明了所有問題。這樣就可以做到對這個人的跟蹤和分析。就好比我把我的眼線放在100商店,你訪問各個商店時,他們就把你的購買什么的情況告訴我,天長日久我就知道你喜歡買什么了,不知道這個例子是否準確。

暫時先寫到這里吧,這個問題也是首次稍微深入探索下,后邊根據進展再補充吧,如果有錯誤請讀者一定指正不勝感激。總之,這種基礎知識是設計框架的基石,必須要搞清楚。否則,寢食難安、芒刺在背。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 专栏| 雅江县| 张家界市| 拜城县| 青铜峡市| 呼和浩特市| 芮城县| 汶川县| 阆中市| 江津市| 宁城县| 临安市| 上思县| 伊宁市| 定日县| 揭西县| 伊通| 鹰潭市| 永州市| 苏尼特右旗| 杨浦区| 威宁| 泸州市| 科技| 宿州市| 内江市| 吉隆县| 衡山县| 惠东县| 田东县| 渑池县| 镇远县| 来安县| 全州县| 洪洞县| 镇江市| 三江| 山阴县| 卓资县| 十堰市| 德格县|