首頁 > web前端 > css教學 > 基於CSS的指紋

基於CSS的指紋

Lisa Kudrow
發布: 2025-03-16 09:31:11
原創
968 人瀏覽過

CSS-Based Fingerprinting

網站指紋識別技術令人擔憂。它指的是收集足夠多的用戶元數據,從而識別用戶身份。 JavaScript 提供了各種指紋識別可能性,結合服務器訪問的IP地址,使得指紋識別變得非常普遍。

然而,人們通常不會將CSS視為指紋識別的媒介,因此認為它在某種程度上是“安全的”。但Oliver Brotchie 提出了一種僅使用CSS進行一定程度指紋識別的方案。

考慮一下我們擁有的所有@media查詢。我們可以使用any-pointer測試指針類型。想像一下,對於每個值,我們都從服務器請求一個完全唯一的背景圖像。如果請求了該圖像,我們就知道了這些@media查詢為真。我們可以用類似這樣的方法開始進行指紋識別:

 .pointer {
  background-image: url('/unique-id/pointer=none')
}

@media (any-pointer: coarse) {
  .pointer {
    background-image: url('/unique-id/pointer=coarse')
  }
}

@media (any-pointer: fine) {
  .pointer {
    background-image: url('/unique-id/pointer=fine')
  }
}
登入後複製

結合我們可以使用prefers-color-scheme測試暗模式偏好的事實,指紋識別就更加清晰了。事實上,Oliver 最關注的是當前CSS用戶首選項媒體查詢的草案:

即將發布的草案不僅使這種方法具有可擴展性,而且還會提高其精度。目前,如果沒有其他方法,很難將每個請求最終與特定訪問者聯繫起來,因為確定其來源的唯一可行方法是按連接的IP地址對請求進行分組。但是,使用新的草案,通過生成一個隨機字符串並將其插入每個訪問者的URL標籤中,我們可以準確識別該訪問者的所有請求。

還有更多方法。我們可以創建相隔1像素的媒體查詢,並為每個查詢請求一個背景圖像,從而完美地猜測訪問者的窗口大小。可能還有十幾個鮮為人知的奇特媒體查詢,但它們對於使用CSS進行指紋識別非常有用。將其與各種@supports查詢結合使用,可以有效地猜測確切的瀏覽器。再結合測試特定本地字體安裝的經典技術,你就可以得到一個相當不錯的指紋識別機器。

 @font-face {
  font-family: 'some-font';
  src: local(some font), url('/unique-id/some-font');
}

.some-font {
  font-family:'some-font';
}
登入後複製

生成的CSS代碼量很大(這是生成它的Sass代碼),但顯然一旦我們可以在URL中使用自定義屬性,它就會大大減少。

我並不太擔心這個問題,主要是因為我沒有禁用JavaScript,而JavaScript已經具備更廣泛的指紋識別能力。此外,已經存在其他類型的CSS安全漏洞,例如讀取已訪問鏈接(瀏覽器已解決)、按鍵記錄和用戶生成的內聯樣式,以及其他一些人在另一篇文章中指出的內容。

但是,Oliver關於指紋識別的研究非常出色,值得所有比我更了解網絡安全的人關注。

以上是基於CSS的指紋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板