簡體   English   中英

有沒有辦法讓客戶端無法修改它的瀏覽器和操作系統名稱?

[英]Is there a way to get a client's browser and os name such that client cannot modify it?

所以我必須獲取客戶端的瀏覽器和操作系統名稱。 但問題是我們不希望用戶能夠操縱有關操作系統或瀏覽器的信息。 但是一些網站表明只有一種方法可以做到這一點,即使用請求 header userAgent。

以下是我瀏覽過的鏈接:

  1. 通過解析用戶代理檢索瀏覽器、操作系統和設備類型
  2. 如何防止用戶代理被用戶更改
  3. 如何防止網站檢測到我的操作系統? 我應該使用哪個瀏覽器?

所以根據這些,我們只能在 userAgent 的幫助下做到這一點,並且客戶端更改它並不是一件難事,而且我們也無法檢測到客戶端是否修改了它。 事實證明,即使是像 amazon 和 facebook 這樣的 mnc 也依賴於 userAgent。

因此,在了解設備指紋時,我了解了一個名為FingerprintJs的 javascript 庫,而且當我嘗試使用它時,他們似乎並不依賴 userAgent 來查找客戶端操作系統名稱,結果證明在操縱 userAgent 時我得到了原始文件結果。 我仍在試圖弄清楚它們究竟是如何獲取操作系統和瀏覽器名稱的。 即使客戶端也可以操縱這一點,我們是否還有一種方法可以至少讓客戶端難以偽造瀏覽器和操作系統?

您無法限制隨請求發送到服務器的值。 用戶將始終能夠使用例如 curl 發送一些任意標頭,cookies 等。您可以通過一些晦澀難懂的方式使篡改值變得更加困難,但這並不能使這樣的解決方案安全。

設備指紋識別可能會有所幫助,但您很可能會被廣告攔截器阻止,因為它們也針對指紋識別。 盡管如此,即使您確實實施了設備指紋識別並獲得了有關用戶瀏覽器的更准確數據,用戶仍然可以篡改請求並更改該數據。

我不知道您的要求是什么,但通常情況下,您不應該太關心用戶的瀏覽器或操作系統。

由於無法保證知道用戶的操作系統/瀏覽器(因為用戶可以通過他們的請求發送任何內容),所以要問的更重要的問題可能是:

為什么要知道用戶的操作系統/瀏覽器?

這可以幫助我們為您的實際需求找到更好的答案。

例如,這可能會有所幫助: https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#considerations_before_using_browser_detection

我能想到的一種方法是通過自定義瀏覽器擴展/插件。 您甚至可以使用瀏覽器 API,具體取決於目標瀏覽器。

然后,您將制作一個有效負載,它將計算/計算帶外的“客戶端簽名”,而不是在瀏覽器標准請求周期內,並計算一個簽名的、自我驗證的 hash,存儲為 cookie。

這需要對所涉及的相關層有一些了解。

您本質上是在談論設備指紋識別。

雖然有大量的方法,但您可能並不真的想要維持所需的開銷,因為它通常使用多種方法來完成,其中許多是通過利用瀏覽器中的錯誤、http 協議、網絡路由分析甚至是聰明的針對許多操作系統錯誤和/或怪癖。


一個更簡單的方法是為您的用戶提供一個散列 cookie,並使用一個方案來檢測它是否被修改。 該 cookie 以及其他身份驗證和驗證機制會簡單得多,並且可能足以滿足您的目的。


如果確實是關鍵任務,則有提供此類服務的 3rd 方 API。


當然從哲學上講,如果天氣與否,您是否應該對用戶進行指紋識別? 真的取決於您和您的用戶的期望。


但是你有 go,我希望這可以讓你更廣泛地了解所涉及的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM