文章插圖

文章插圖
CSS代碼實現用戶跟蹤及反跟蹤方法
跟蹤原理
這個方法利用了CSS的兩個特性:將內容注入HTML元素的能力(操縱DOM),以及在用戶執行操作后更改樣式的能力(渲染頁面) 。該網站的工作原理是使用content屬性在執行操作時設置URL 。URL調用一個PHP腳本,該腳本記錄有關操作的詳細信息,這些操作將作為URL參數傳遞 。使用:: before和:: after CSS選擇器設置此URL可確保僅在執行操作時調用URL,而不是在首次加載頁面時調用URL 。
例如,以下CSS在每次單擊#link元素時調用URL:
以下是這樣一個腳本的PHP示例:
用戶可以設置瀏覽器的User-agent來欺騙服務器,[email protected] at-rule測試特定于瀏覽器的CSS屬性來規避它 。例如,以下操作通過檢測-webkit-appearance可用,以及-ms-ime-align不可用,來檢測是否為Chrome瀏覽器:
為了正確檢測用戶操作系統,在這個跟蹤中動用了字體檢測 。例如,通過檢測瀏覽器是否支持Calibri字體系列,就可以判斷瀏覽器是不是在Windows中運行:
在瀏覽器中很難防止這種攻擊 ??梢越柚粋€跨站注入漏洞來完美實現信息竊取,還非常難于發現 。如果想要完全避免這種攻擊,除非禁用CSS,但是這樣一來網站也就掛掉了 。雖然無法完全杜絕攻擊,但是我們可以使用內容安全策略(CSP)增加其利用的難度 。
CSP是一組規則,用于確定瀏覽器可以執行和不執行的操作 。CSP通常用于防止跨瀏覽器加載不受信任的腳本導致的跨站點腳本(XSS)和其他攻擊 。雖然通常與JavaScript文件一起使用,但CSP也可以應用于CSS樣式表 。
我們假設由第三方提供商托管的樣式表的網站,攻擊者危及樣式表并將用戶跟蹤添加到頁面上的鏈接如下:
禁用內聯樣式
禁用內聯樣式是CSP提供的最大安全優勢之一 。內聯樣式是直接在HTML文檔中聲明(或通過JavaScript設置)的樣式,而不是從樣式表中加載的樣式 。內聯樣式,尤其是動態生成的樣式或用戶創建的樣式,非常難以調試和保護 。所以CSP通常會阻止所有內聯樣式,并將那些經過特別批準的內容列入白名單 。
以下規則阻止所有內聯樣式以及外部托管的樣式表:
Content-Security-Policy "style-src 'self';"使用哈希和隨機數驗證樣式
如果阻止內聯樣式不能禁止,我們仍然可以使用哈希和隨機數確保CSS的完整性 。
在樣式表或內聯樣式上執行散列函數時,除非樣式更改,否則它應該始終返回相同的結果 。這對于將某些內聯樣式和樣式表列入白名單非常有用,同時可以驗證樣式是否未被修改或篡改 。
樣式表通常托管在第三方服務器上,例如CDN中,這會導致一個新的攻擊入口 。如果CDN遭到入侵,怎么能阻止攻擊篡改托管的CSS呢?
答案是SRI,可以使用資源完整性(SRI)解決此問題 。
SRI使用哈希來驗證腳本和樣式表的內容 。計算每個文件的哈希并將其附加到HTML元素的完整性屬性 。當瀏覽器下載腳本或樣式表時,它會計算其哈希值并將其與存儲在屬性中的值進行比較 。如果匹配,才會加載腳本或樣式 。
- 如何獲取div中的內容 jquery獲取div內容
- 日本福島食品解禁了嗎 為什么禁止從日本福島進口
- 電腦桌面點擊右鍵沒有新建文件夾 電腦右鍵怎么沒有新建文件夾
- JavaScript獲取div高度 css獲取div高度
- 兩個div并排顯示 兩個div怎么并列
- css超出部分滾動條 div內容超出后自動顯示滾動條
- windows7怎么禁止更新 win7停止更新設置
- 怎么獲取div的值 js獲取html的值
- div 文字換行 css div自動換行
- div中的div居中對齊 div中div垂直居中對齊
