2017-06-22 61 views
10

Tôi muốn xác định người dùng đang truy cập vào API của mình ngay cả khi họ xóa cookies hoặc localstorage bất cứ nơi nào tôi lưu trữ thông tin phiên hiện tại. Tôi thấy rằng browser fingerprinting là một trong những cách để đạt được điều này một cách chính xác. Tôi đang làm việc trên một dự án angular2 cho lối vào. Tôi có các câu hỏi sau:Tôi làm cách nào để sử dụng vân tay trình duyệt trong trang web của mình?

  1. Có bất kỳ thư viện nào có sẵn cho angular2 tạo vân tay trình duyệt không? (Tôi đã thấy ng2-device-detector. Điều này không cung cấp nhiều thông tin và cũng không có vân tay băm. Vì vậy, tôi có phải băm bản thân mình không?)
  2. Đã xem fingerprintjs2 điều này thực hiện rất nhiều thông tin nhưng không thực hiện cho angular2, nhưng tôi tự hỏi vân tay băm sẽ thực sự quan trọng như thế nào? Đối với yêu cầu trong API của tôi, tôi sẽ kiểm tra xem trọng tải có chứa fingerprint đã tồn tại trong bất kỳ phiên hiện tại nào không? (Thực sự tải trọng? Nó sẽ chỉ là một yêu cầu POST. Người dùng có thể chỉ cần gửi một chuỗi dài ngẫu nhiên như được băm fingerprint và API sẽ xử lý yêu cầu như thể nó đến từ một người khác.)
  3. Tôi đoán sau đó tôi sẽ phải sử dụng một số API không chỉ tạo ra một số hashed fingerprint trong số frontend mà còn xác nhận sau khi yêu cầu đã đạt đến API, chẳng hạn như Google's reCaptcha. Có bất kỳ API nào như vậy không?
  4. Nếu không có bất kỳ API nào như vậy thì tôi đoán tôi sẽ phải triển khai chức năng như vậy trong chính API của mình?

Vui lòng viết đề xuất của bạn.

Trả lời

3

1. Dường như có không bất kỳ thư viện (chuyển hay cách khác) đặc biệt là đối Angular2.

2. Bạn không cần một phiên bản Angular2 của nó, chỉ cần tiêm các tập tin nguồn trong bạn index.html và bạn có thể sử dụng nó như thế này, 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 
    }); 
    } 
} 

Bạn phải xử lý mã này băm như bất kỳ mã thông báo nào khác như JWT, độc quyền hoặc toàn bộ. Nhưng bạn cần lưu trữ nó ở đâu đó, giống như bất kỳ mã thông báo nào khác, đó là cách bạn sẽ có thể kiểm tra tính xác thực của nó. Nếu một người dùng xử lý yêu cầu và băm, JWT có một cơ chế xác thực làm cho nó không hợp lệ trên giả mạo, nhưng tôi cho rằng hàm băm dấu vân tay không thể cung cấp sự an toàn đó.

3. Không, không (IMK).

4. Nếu no.-2 hoạt động cho bạn, tôi cho rằng bạn sẽ tốt hơn rất nhiều.

+2

Thay vì 'khai báo var ...', bạn nên sử dụng các kiểu chữ đầy đủ từ đây: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/fingerprintjs2 – Ludwig

+0

Cảm ơn, @Ankit Singh, sau câu trả lời của bạn Tôi đã ngừng tìm cách để tôi có thể xác nhận dấu vân tay. Yêu cầu của tôi là xác định kẻ xâm nhập (người chắc chắn có thể thử với dấu vân tay ngẫu nhiên). Sử dụng 'fingerprintjs2' chắc chắn sẽ hữu ích cho việc xác định người dùng bình thường. –

+0

chính xác, bạn nói đúng. vui vì tôi có thể giúp đỡ –

0

Trả lời khá nhiều câu trả lời liên quan đến Góc.Dưới đây là một API cung cấp một dấu vân tay, do đó bạn không cần phải thực hiện nó cho mình:

Browser Fingerprint API

Mặc dù giải pháp này không phải là một thành phần góc (hoặc những gì-có-bạn), bạn có thể thực hiện cuộc gọi AJAX để lấy dấu vân tay và gửi nó tới máy chủ của bạn.

Tiết lộ đầy đủ: Tôi là nhà phát triển của dịch vụ này.

+0

Có, anh ấy đã làm, tôi sẽ xem xét API này nhưng tôi tin rằng điều này sẽ tương tự như sử dụng https://github.com/Valve/fingerprintjs2 –

+0

@ AshishRanjan- Nó hơi khác một chút so với FingerprintJS. Bạn không cần phải bao gồm một tệp JS hoặc gọi hàm JS, do đó việc tích hợp đơn giản hơn. Tuy nhiên, vì dịch vụ dựa trên API nên nó không chính xác như JS của vân tay. –

Các vấn đề liên quan