我要告訴你們的是,在沒有獲得你贊成的狀況下,目前大多數主流的網絡平臺都會泄漏你的登陸狀態。不管你當前是否進行了登陸操做,攻擊者均可以檢測到你電腦登陸了那些網絡平臺。並且目前有不少平臺能夠提供人口統計以及個性分析之類的服務,因此攻擊者也能夠就此推測出你的人物特性。php
對於絕大多數的平臺而言,它們均可以利用登陸機制來檢測用戶是否登陸了本身的網絡服務。雖然這個漏洞已經存在多年了,並且這也是一個衆所周知的漏洞,可是目前大多數公司彷佛並不打算去修復它。html
須要注意的是,這個漏洞的利用方法很是簡單,並且修復這個漏洞也十分容易。接下來,我會以facebook.com爲例子來給你們介紹這項技術的工做原理。web
首先,咱們要了解什麼是登陸重定向機制。假設你已經登陸並正在訪問https://www.facebook.com/bookmarks/pages這個頁面。瀏覽器
如今,在一個單獨的網頁標籤中訪問這個URL地址,此時你在這個網頁標籤中並無進行登陸操做,所以你會被下面這個URL地址重定向至網站服務的登陸頁面:服務器
https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages
請注意上述URL地址中的next參數,該參數的值以下:cookie
https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages
咱們就是從該參數中的這個地址跳轉過來的,當咱們完成了登陸操做以後,上面的這個URL會將咱們重定向至以前咱們所要訪問的那個頁面。網絡
若是咱們如今已經登陸了,那麼在一個新的瀏覽器頁面標籤下訪問這個URL地址(https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages),那麼瀏覽器會直接將咱們定向至這個頁面。因此咱們能夠得出結論:測試
1. 若是你已經登陸了:URL將返回next參數中的地址;網站
2. 若是你沒有登陸:URL將返回網站服務的登陸頁面;spa
這個URL地址有什麼用呢?同源策略能夠防止咱們從除了https://facebook.com以外的其餘域讀取這個請求所返回的結果。
同源策略對於HTML頁面來講是很是嚴格的,可是它容許咱們從其餘域接收圖片資源。因此,若是next參數中的資源是圖片資源的話,咱們就能夠從本身的網站來讀取這部分數據了。Facebook只會檢測URL地址中next參數的值是否以https://facebook.com開頭,因此咱們只須要在Facebook的網站中找一張圖片文件就能夠了。這應該沒什麼困難吧?其實,這確實有點難!由於Facebook網站中的圖片所有託管在域名fbcdn.net。可是還有一張圖片幾乎是全部Web服務器中都會有的,那就是favicon.ico!
下面給出的就是將網站圖標做爲next參數時的URL地址:
https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico
這是一個很是有意思的URL地址:
1. 若是你已經登陸了:URL將返回網站圖標;
2. 若是你沒有登陸:URL將返回網站服務的登陸頁面;
咱們能夠在本身網站中的某個<img>標籤內使用這個URL地址:
<imgsrc="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">
這個<img>標籤的屬性以下:
1. 若是你已經登陸了:你將會接收到網站圖標,HTML頁面會自動加載這個圖片資源,並自動觸發onLoad回調事件;
2. 若是你沒有登陸:你將會接收到網站的登陸頁面,圖標資源會加載失敗,並自動觸發onError回調事件;
<img onload="alert('logged in to fb')"onerror="alert('not logged in to fb')"src="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">
這項技術適用於目前絕大多數主流的網絡平臺,由於不少服務提供商在他們的登陸地址中都添加了重定向參數,並且他們也須要在主機中託管網站的圖標資源。
2016/10/07:Instagram移除了網站根目錄下的圖標文件,並將其轉移至了他們的CDN中。
2016/10/14:Stackoverflow已經修復了這個問題。
2016/10/14:火狐瀏覽器彷佛也修復了這個問題。由於當咱們使用新版火狐瀏覽器訪問測試頁面時,咱們接收到了以下圖所示的錯誤信息:
2016/10/14:Netflix經過將頁面重定向至網站主頁面以修復這個問題。
攻擊者還能夠在去匿名化技術、點擊劫持攻擊和網絡釣魚攻擊中使用這項技術。這樣一來,將會給用戶帶來更大的損失。
所以,爲了緩解這個問題所帶來的影響,首先就是要禁用全部的第三方cookie。除此以外,你也能夠安裝相似Privacy Badger和uMatrix這樣的瀏覽器插件來保護你免受此類攻擊。