休息了兩天,鹿鹿接到了親戚的電話:‘歪,鹿鹿呀,爲啥我最近搜啥,廣告就給我推啥呢?是否是咱們上網幹啥大家都知道啊,這可太可怕了!’
看着外面的鵝毛大雪,鹿鹿不由想來一段 竇娥冤 抒發悲憤。
仍是趕忙解釋一下吧,免得誤會愈來愈大。html
官方解釋:cookies中文名稱爲小型文本文件,指某些網站爲了辨別用戶身份而儲存在用戶本地終端(Client Side)上的數據(一般通過加密)。它知足RFC6265標準。
通俗來講,就是做爲用戶的你每訪問一個網站,這個網站就會存儲一些你的用戶信息(好比用戶名、密碼、瀏覽記錄、IP地址之類的)到Cookies裏,固然到底存什麼取決於這個網站。
事實上:普通網站都不會存儲重要的信息,它們僅僅存一個你的登錄狀態,也就是你拿用戶名密碼換取的令牌,還有就是網站針對你的斷定(好比你在這個網站上的惟一標識是什麼,你訪問的是他們的哪臺服務器,你使用的是哪一個版本的產品),這些信息你都不須要關心,它和你的隱私一點關係都沒有。
一些安全的網站會將這些信息進行加密,目的是防止別人僞造這些信息欺騙網站。固然一些不太靠譜的網站仍是會在Cookie裏存你的用戶名密碼的,這是極其不安全的,信息很快就會被泄露。前端
那親戚是訪問了那些自己不靠譜的網站嗎?有可能,也不必定。
那別的網站是怎麼攻擊的呢?這實際上是一種常見的攻擊--XSS 跨站腳本攻擊web
舉個栗子,某博客網站S上的某做者小黑寫了一篇文章,而且偷偷插入一段<script>
代碼,而後把文章發佈。而後小白在網站S上去看這篇文章,這段代碼開始執行,這段代碼抓取小白的受權Cookie副本,因而小白的Cookie被獲取到小黑的服務器,小黑獲取到了小白的帳號信息。若是Cookie裏有用戶密碼,那就很是危險了,不光是小白的瀏覽記錄,它的財產安全也會受到威脅了。固然這和攻擊者目的有關,若是小白真的訪問了亂七八糟的網站,輸入了過多的我的信息,只能勒緊腰帶自認倒黴了;可是多數大網站的Cookie沒有用戶密碼更不會出售用戶信息,頂多呢,是讓小黑能夠短期(Cookie會過時)內利用這個Cookie模擬下登錄狀態發個帖啥的。後端
咱們知道每次訪問網站的時候瀏覽器都會將用戶在該網站的Cookie發給網站服務器。瀏覽器
再舉個栗子,小黑訪問了一個網站A,網站A裏有個來自某營銷網站B的圖片,圖片中也植入了<script>
代碼。小黑在瀏覽器訪問這張圖片的時候會提供網站B的Cookie,咦,哪來的網站B的Cookie?
小黑在訪問網站A的時候,同時也以B用戶的身份訪問了B網站。「他也沒在B網站註冊啊,怎麼會是B網站用戶?」 嘿嘿,不用他註冊,由於也不須要他知道,B網站是自動分配一個賬戶給小黑的,若是像A這樣的網站多了,B網站想在不一樣網站之間都能定位到小黑,怎麼辦?把分配給他的賬戶存在B的Cookie裏就能夠啦。那目的是啥呢?
B網站在拿到Cookie的同時,還獲取到了網站A給他的一些信息,好比看了什麼視頻啊,新聞啊等等。其目的也是讓營銷網站B針對固定用戶投放的廣告更精準。
因而乎,以後小黑就能夠在打開網頁時,看到網站B根據本身以前的喜愛投放的廣告了~
這就是鹿鹿的這位親戚遭遇的來龍去脈啦~安全
上面就是跨站腳本攻擊的原理和危害,它可能無處不在,只要有可能植入腳本的地方,就有它存在的可能。服務器
簡單用代碼演示一下,XSS究竟是怎麼進行腳本注入的。
打開任意一個網站,執行如下代碼:cookie
//方法一,添加script元素 var script = document.createElement('script'); script.textContent=alert(100); // 馬上就會在頁面進行執行,彈出數字100,腳本注入成功 ------------------------------------------------- //方法二,設置script屬性src,引入腳本的網絡地址 var script = document.createElement('script'); // 設置文件地址 script.src = 'http://yiifaa.com/index.js' // 還能夠執行回調函數 script.onload = function() { } ------------------------------------------------- //方法二,經過document.write方法 // 注意對/符號的轉義 \\/ var script = '<script>alert(100)<\\/script>'; document.write(script);
那麼怎麼預防它呢?網絡
<script>
中<
爲<
;>
爲>
。這樣惡意代碼都會被轉義,再也不被瀏覽器執行。好了,誤會終於解除了,鹿鹿也保證在後續的工做中作好頁面的安全性能,保護好你們的隱私!yii