2017-06-22 104 views
10

Chcę zidentyfikować użytkowników uzyskujących dostęp do mojego interfejsu API, nawet jeśli wyczyszczą oni cookies lub localstorage wszędzie tam, gdzie przechowuję bieżące informacje o sesji. Widzę, że browser fingerprinting jest jednym ze sposobów osiągnięcia tego do pewnej dokładności. Pracuję nad projektem angular2 dla interfejsu użytkownika. Mam następujące pytania:Jak korzystać z odcisku palca przeglądarki na mojej stronie?

  1. Czy istnieją jakieś biblioteki dostępne dla angular2, które tworzą odcisk palca przeglądarki? (Widziałem ng2-device-detector. To nie daje wiele informacji, a także nie ma zakodowanego odcisku palca.Tak, czy muszę go zaszyfrować?)
  2. Widziałem fingerprintjs2 to zajmuje dużo informacji, ale nie ma implementacji dla angular2, ale zastanawiam się, jak zmieniłby się odcisk palca? W przypadku żądania w moim interfejsie API sprawdzę, czy zawartość zawierała fingerprint, która już istniała w którejkolwiek z istniejących sesji? (Naprawdę ładunek? To będzie po prostu żądanie POST. Użytkownik może po prostu wysłać losowy długi ciąg jako mieszany fingerprint, a API potraktuje żądanie tak, jakby pochodziło od innej osoby.)
  3. Zgaduję, że będę muszą używać interfejsu API, który nie tylko generuje hashed fingerprint w frontend, ale również sprawdza się po tym, jak żądanie dotrze do interfejsu API, podobnie jak Google's reCaptcha. Czy są jakieś API takie jak takie?
  4. Jeśli nie ma żadnych interfejsów API, to przypuszczam, że będę musiał wdrożyć takie funkcje w moim API?

Proszę napisać swoje sugestie.

Odpowiedz

3

1. Wydaje się nie dowolnej biblioteki (przeniesiony lub w inny sposób), zwłaszcza dla Angular2.

2. Nie musisz wersję Angular2 go, po prostu wstrzyknąć pliku źródłowego w index.html i można go używać tak, 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 
    }); 
    } 
} 

Musisz Traktuj to hash jak każdy inny token, taki jak JWT, wyłącznie lub łącznie. Ale musisz go gdzieś przechowywać, tak jak każdy inny token, dzięki temu będziesz mógł sprawdzić jego autentyczność. Jeśli użytkownik ma problemy z żądaniem i hashem, JWT ma mechanizm sprawdzania poprawności, który czyni go nieważnym przy manipulowaniu, ale przypuszczam, że hasz odcisków palców nie może zapewnić tego bezpieczeństwa.

3. Nie, brak (IMK).

4. Jeśli nr-2 działa dla Ciebie Przypuszczam, będziesz o wiele lepiej.

+2

Zamiast "declare var ...", powinieneś użyć pełnej wersji z: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/fingerprintjs2 – Ludwig

+0

Dzięki, @Ankit Singh, po twojej odpowiedzi Przestałem szukać sposobów, w jaki mogę zweryfikować odcisk palca. Moim żądaniem było zidentyfikowanie intruza (który mógł zdecydowanie wypróbować losowe odciski palców). Używanie 'fingerprintjs2' z pewnością będzie przydatne do identyfikacji normalnego użytkownika. –

+0

dokładnie, masz rację. Cieszę się, że mogłem pomóc –

0

Ankit prawie odpowiedział w odniesieniu do Angular.Oto API, który zapewnia odcisk palca, dzięki czemu nie trzeba go realizować siebie:

Browser Fingerprint API

Chociaż to rozwiązanie nie jest kątowym składnik (lub co-ma-ci), można wykonać połączenie AJAX aby pobrać odcisk palca i przesłać go na serwer.

Pełna informacja: Jestem twórcą tej usługi.

+0

Tak, zrobił, będę musiał spojrzeć na to API, ale wierzę, że będzie podobny do korzystania z https://github.com/Valve/fingerprintjs2 –

+0

@ AshishRanjan- To trochę różni się od FingerprintJS. Nie musisz dołączać pliku JS lub wywoływać funkcji JS, więc integracja jest prostsza. Ponieważ jednak usługa jest oparta na interfejsie API, nie jest tak dokładna, jak w przypadku linii papilarnych JS. –