2017-06-22 81 views
10

我想識別訪問我的API的用戶,即使他們在我存儲當前會話信息的位置清除了cookieslocalstorage。我發現browser fingerprinting是達到某種精度的方法之一。我正在爲前端工作angular2項目。我有以下問題:如何在我的網站上使用瀏覽器指紋?

  1. 是否有任何庫可用於創建瀏覽器指紋的angular2? (我見過ng2-device-detector。這不會給出太多的信息,也沒有散列指紋。那麼,我必須自己散列嗎?)
  2. 已見過fingerprintjs2這確實需要很多信息,但沒有爲angular2實施,但我想知道散列指紋究竟如何重要?對於API中的請求,我將檢查有效載荷是否包含已存在於任何現有會話中的fingerprint? (真正的有效載荷?它只是一個POST請求。用戶可以簡單地發送一個隨機的長字符串作爲散列fingerprint和API將處理請求,就好像它來自不同的人)。
  3. 我想我會然後必須使用一些API,它不僅在frontend中生成hashed fingerprint,而且在請求到達API之後也會生效,如Google's reCaptcha。有沒有像這樣的API?
  4. 如果沒有任何API,那麼我想我將不得不在我的API本身中實現這樣的功能?

請寫下您的建議。

回答

3

似乎有沒有任何庫(移植或以其他方式),特別是對Angular2

2.你不需要它的一個Angular2版本,只需注入源文件中的的index.html,你可以用它像這樣,PLUNKER

declare var Fingerprint2: any; 

@Component({ 
    selector: 'my-app', 
    template: `Hello`, 
}) 
export class App { 
    constructor() { 
    new Fingerprint2().get(function(result, components){ 
     console.log(result); // a hash, representing your device fingerprint 
     console.log(components); // an array of FP components 
    }); 
    } 
} 

你必須將此散列作爲任何其他標記,如JWT,排他或包含。但是你確實需要將它存儲在某個地方,就像其他任何令牌一樣,這就是你將如何檢查它的真實性。如果用戶使用請求和哈希值發脾氣,JWT有一個驗證機制,使其在篡改時無效,但我認爲fingerprinting哈希不能提供這種安全性。

3.不,沒有(IMK)。

4.如果no.-2適合你我想你會好得多。

+2

而不是'聲明變種...'你應該使用從這裏完整的類型:https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/fingerprintjs2 – Ludwig

+0

謝謝,@Ankit辛格,在你的答案我停止了尋找可以驗證指紋的方法。我的要求是確定入侵者(誰肯定可以用隨機指紋進行嘗試)。使用'fingerprintjs2'對於識別普通用戶肯定會很有用。 –

+0

確切地說,你是對的。很高興我可以幫助 –

0

Ankit與Angular相關的問題相當多。下面是提供了一個指紋,所以你並不需要實現它自己的API:

Browser Fingerprint API

雖然這個解決方案不是一個角度成分(或什麼具備的,你),你可以做一個AJAX調用獲取指紋並將其提交給您的服務器。

完全披露:我是這項服務的開發者。

+0

是的,他做到了,我會看看這個API,但我相信這將類似於使用https://github.com/Valve/fingerprintjs2 –

+0

@ AshishRanjan-它與FingerprintJS有點不同。您不需要包含JS文件或調用JS函數,因此集成更簡單。但是,由於該服務基於API,因此不如Fingerprint JS那麼準確。 –

相關問題