HTML5APIs是如何跟蹤使用者軌跡的
如果你認為 IP 地址、cookies 和 HTTP 頭是在 web 上唯一標識和跟蹤使用者的要素的話,那麼你就大錯特錯了!
新的現代化特徵辨別技術依賴於以下多種要素:
IP地址
Cookies
語言
時區
HTTP 頭(使用者代理, 參考頁等)
HTML5 APIs(WebRTC, Battery API等)
HTML5 和 CSS3 特徵檢測
CSS 媒體查詢
WebGL
瀏覽器外掛(Flash, Silverlight, Java等)
瀏覽器載入項
瀏覽器選項(阻止瀏覽器追蹤等)
瀏覽器儲存
系統字型
TLS/SSL 會話ID
硬體檢測(攝像頭,麥克風,觸控式螢幕等)
螢幕(解析度,色彩深度,畫素等)
音視訊編解碼器
裝配特徵
最近 W3C 在 HTML 標準中允許開發者與使用者裝置通訊,以增強網頁、App 和遊戲設定。很多 API 被開發出來以便更精準的辨別使用者身份已不足為奇。
什麼是指紋特徵呢?
想象一下,當你走進一家商店入口處,一個高階的攝像頭對你進行掃描,然後儲存你的相關資訊,如:體型、身高、膚色、服飾、鞋子、走路姿態、語調等。所有這些資料將被排成一個序列,然後通過一個雜湊函式來計算你的特徵圖譜。下次你再來到這家商店或屬於相同機構的其他商店時,通過快速分析你的特徵,即使你著裝風格不同,也能將你與之前訪問的那個人聯絡起來。
使用瀏覽器訪問網頁也同樣如此(不需要使用者做任何特別的操作)。無論你尚未登入或者禁用 cookies,它都可以將使用者與一個標識聯絡起來,它還不是百分之百的準確但一直在改進。
電子前線基金會(Electronic Frontier Foundation)在出版的“Web瀏覽器如何獨特?”(PDF)一文中研究了瀏覽器的使用者跟蹤。WebKit Wiki和Wikipedia上有裝置識別的精確描述。
客戶端的JavaScript
如果你想對指紋特徵有更好的瞭解,可以查詢一下 web 開發者專用的 JavaScript 庫:Fingerprintjs2。
要想有效地防止識別指紋特徵的指令碼執行,你可以通過阻止全域性 JavaScript 的執行來實現,又或者使用NoScript 或者 uMatrix 擴充。但還有很多因素會暴露過多與你相關的資訊,並且會繼續儲存在其他未知的指紋特徵方式中。
HTML5 APIs
得益於新型的 HTML5 標準,開發者在某些情況下不需請求批准,就有有許可權去獲得和檢測的使用者資訊或硬體裝置。以下的 API 仍處於無監管下被濫用。要避免這種情況,最普遍的方法是禁止 JavaScript 執行,或者使用特殊的載入項。
Canvas
這是令人討厭,隱祕和(啟用 javascript)幾乎就不可停止的技術,從 2012 年以來就積極被利用,在廣泛使用的指令碼(記得新增這個 “探索”找到替代品放到 cookies 中)中偶爾嵌入。
當瀏覽器訪問一個網頁是一個 canvas 的指紋指令碼,它就被要求去繪製一個隱藏的圖形並轉換為一個令牌。令牌的獨特性等因素取決於瀏覽器,作業系統和安裝的圖形硬體。
為了避免 Canvas 指紋你可以:
顯示全域性 javascript
使用 NoScript, uMatrix 或者CanvasFingerprintBlock (僅Chrome支援) 擴充套件
使用 Tor 瀏覽器
電池
由於檢測電池狀況的 API 能夠獲得裝置電池的充電時間和放電時間。這些資料一旦結合起來就會近似於每個裝置和電池狀態的特徵,成為網路中跟蹤活動的潛在因素。
一篇名為《正在洩露的電池——對 HTML 5電池資訊 API 的隱私調查》的論文針對 Linux 系統上的 Firefox 瀏覽器使用者進行了調查。其中最深刻的研究結構是:“我們打算對電池狀態 API 進行小改造,並在 Firefox 瀏覽器裡執行,去定位調查中的隱私流出。後來,我們給 Firefox 的漏洞彙報被接受了,而且開始修復漏洞。
在 Chrome 瀏覽器,你可以安裝名為 Battery Info Blocker 的載入項去禁止網站獲取你的電池資訊。
WebRTC(Web Real-Time Communication,網頁實時通訊)
當你不使用 WebRTC 時,應當禁止它。WebRTC 不僅會洩露你的本地 IP 地址,還會在 VPN 上洩露你的 IP 地址(在 Windows 系統下),這不同於採集系統的指紋特徵的因素。
為了避免 WebRTC 洩露你的隱私,應該使用 Firefox 瀏覽器並且禁止 WebRTC,這可以通過開啟about:config,找到值為 media.peerconnection.enabled 的項並且設定成 false
在 Chrome 中,你可以安裝名為 WebRTC 的載入項,否則會發生隱私洩露。
資源時序
開發者能夠使用 API 去收集完整的與檔案資源有關的時序資訊。在 Working Draft 中有表達對隱私的擔憂:“統計性的指紋特徵是一種對隱私的擔憂,惡意網站會通過檢測瀏覽器快取的時序資訊,包括訪問和忽略第三方網站的資源,來判斷使用者是否訪問過第三方網站“
如果你使用 Firefox 瀏覽器,可以通過開啟 about:config,並且把選項 dom.enable_resource_timing, dom.enable_user_timing 和dom.performance.enable_user_timing_logging 設定為 false,來阻止這些 API 執行。
在 Chrome 瀏覽器下,唯一的辦法是禁止 JavaScript 指令碼執行。
Geolocation(地理位置)
如果使用這個功能,它會洩露你的物理位置,侵犯你的隱私。現代瀏覽器總是詢問許可來洩露地理位置給網站和 app。
在 Firefox 上禁用這個功能,你應該在位址列上輸入 about:config,找到 geo.enabled 的值,設定其值為 false。
在 Chrome 點選設定(Settings),從顯示高階設定(Show advanced settings)上,找到隱私(Privacy)並且點選內容設定(Content settings), 在視窗裡找到定位(Location)並設定選項不允許任何網站追蹤你的物理位置(Do not allow any site to track your physical location)。
硬體指紋識別
一篇名為 “Hardware Fingerprinting Using HTML5” 的論文(PDF)提到,有一項新的潛在的技術,它基於與硬體裝置通訊的能力,來獲取特定的硬體指紋,作為對基於軟體的指紋(瀏覽器,作業系統,等)的補充。
這篇論文提到,例如 GPU(現代瀏覽器使用硬體來加速),攝像機,揚聲器,麥克風,運動感測器,GPS 和電池等硬體,都可以被 HTML5(未必需要使用者許可)訪問,尤其是 GPU,對進行指紋識別的使用者很有用。
連結
裝置指紋識別
https://en.wikipedia.org/wiki/Device_fingerprint
什麼是裝置指紋識別
https://trac.webkit.org/wiki/Fingerprinting
EFF: 你的網路瀏覽器到底有多特別? (PDF)
https://panopticlick.eff.org/browser-uniqueness.pdf
EFF: Panopticlick測試您的瀏覽器,看看它有多特別
https://panopticlick.eff.org
網路不會遺忘:瘋狂的持續跟蹤機制
https://securehomes.esat.kuleuven.be/~gacar/persistent/
HTML 5的電池狀態 API 的私密性分析
https://eprint.iacr.org/2015/616.pdf
資源定時 API 工作草案
http://www.w3.org/TR/resource-timing
使用 HTML 5 進行硬體指紋識別
http://arxiv.org/abs/1503.01408
瀏覽器漏洞和網路瀏覽器的指紋識別
http://browserleaks.com
現代的&靈活的瀏覽器指紋識別庫
https://github.com/Valve/fingerprintjs2
文章轉載自 開源中國社群[https://www.oschina.net]
相關文章
- 基於kalman濾波的UAV三維軌跡跟蹤演算法matlab模擬演算法Matlab
- 如何繪製完美的滑鼠軌跡
- 軌跡聯邦用到的具體公式 + 軌跡模組的設計公式
- KITTI_00_SPTAM軌跡和KITTI_00_ORB軌跡ORB
- Leaflet 帶箭頭軌跡以及沿軌跡帶方向的動態marker
- JavaScript是如何工作的:使用MutationObserver跟蹤DOM的變化JavaScriptServer
- 根據軌跡分析出使用者家在哪
- 《黎之軌跡》發售紀念訪談:《軌跡》系列的巨大分水嶺
- 生財有跡 | 您專屬的資產跟蹤與分析工具
- 軌跡資料 (三)
- 軌跡規劃理解
- 聊聊 RocketMQ 訊息軌跡MQ
- 智慧手環軌跡APIAPI
- 如何判斷兩條軌跡(或曲線)的相似度?
- 飛槳Tracking目標跟蹤庫開源!涵蓋業界主流的VOT演算法,精準檢測動態目標軌跡演算法
- [20210603]如何跟蹤索引分裂.txt索引
- cesium製作自己的騎行軌跡
- HybridDBforPostgreSQL軌跡相似(伴隨分析)SQL
- not noly go —— 執行軌跡[一]Go
- 如何在 Git 中取消檔案的跟蹤Git
- IDEA之如何Debug原始碼跟蹤Idea原始碼
- 如何使用iPhone限制IP地址跟蹤iPhone
- GPS軌跡記錄器:myTracks for macMac
- git的跟蹤分支和遠端跟蹤分支學習筆記Git筆記
- 百度地圖軌跡(Andriod SDK)地圖
- 自動生成相機標定軌跡
- Mapbox 輕鬆規劃起始點軌跡
- 風場視覺化:繪製軌跡視覺化
- mapboxgl實現帶箭頭軌跡線
- 如何收集Oracle程式中的SQL跟蹤資訊KUOracleSQL
- 搭建一個視覺化使用者行為軌跡打點體系SDK視覺化
- Falcom 之軌跡:40 年不變的 JRPG 魂(上)
- Falcom 之軌跡:40 年不變的 JRPG 魂(下)
- 如何分配和跟蹤專案工作量?
- 如何實現Dolphinscheduler YARN Task狀態跟蹤?Yarn
- 為什麼說《那由多的軌跡》是 Falcom 本世紀最特殊的遊戲?遊戲
- 5分鐘學會物流軌跡地圖API嵌入到頁面中,實現物流軌跡視覺化地圖API視覺化
- sp_trace_setfilter sqlserver篩選跟蹤或跟蹤過濾FilterSQLServer
- 智慧手環運動軌跡API獲取API