Giới thiệu thư viện trợ giúp định danh người dùng - FingerprintJS

Giới thiệu thư viện trợ giúp định danh người dùng - FingerprintJS

Những mẩu tin ngắn hàng ngày dành cho bạn
  • Hẳn là nhiều người ở đây đã nghe đến kiểu tấn công bảo mật Clickjacking rồi nhỉ. Kẻ tấn công thường nhúng một website (thường là mục tiêu) vào trong một iframe trên website của chúng, sau đó làm mờ hoặc ẩn nó đi rồi đặt vào vị trí các nút bấm trên web, ví dụ "Bấm vào để nhận quà". Đâu ai ngờ rằng phía trên nút bấm đó là một nút bấm khác trong iframe. Khá nguy hiểm!

    Nhưng trình duyệt đã có cách ngăn chặn kiểu tấn công này bằng các quy tắc như tiêu đề X-Frame-Options, frame-ancestors của CSP và SameSite: Lax/Strict của Cookies...

    Mới đây, đã xuất hiện thêm kiểu tấn công mới - "DoubleClickjacking" 😨. Đại ý là "hắn" lợi dụng hành động double click để lừa người dùng bấm vào một nút mà hắn muốn. Chi tiết hơn trong bài viết này: DoubleClickjacking: A New Era of UI Redressing.

    » Xem thêm
  • Mọi người đã nghe nói đến Jujutsu - jj - một dạng quản lý phiên bản cho mã nguồn (version control system) chưa? Có vẻ như nó đang nhận được nhiều sự quan tâm.

    Chờ xíu! Chẳng phải git đã quá tốt rồi sao? Thế thì chế ra thằng jj để làm gì nữa? Cũng hơi khó trả lời nhỉ? Mỗi công cụ sinh ra chắc chắn phải cải thiện hoặc khắc phục được nhược điểm của cái trước. Cho nên jj ắt hẳn phải làm được điều gì đó mà git chưa làm được nên mới nổi lên như vậy.

    Thật ra mình đã nghe nói đến jj từ vài tháng trước rồi, nhưng vào đọc thì toàn kiến thức cao siêu. Hoặc là đang mang nặng cái lối suy nghĩ của git vào trong đầu rồi nên chưa lĩnh hội ra được điều gì cả.

    Mình hay có kiểu cái gì đọc lần 1 mà không hiểu thì đọc tiếp lần 2, lần 2 không hiểu thì đọc tiếp lần 3... đến lần thứ n mà vẫn không hiểu thì bỏ. Cơ mà không phải là từ bỏ mà một thời gian sau đó quay lại đọc tiếp. Đến một lúc nào đó khả năng mình sẽ hiểu ra một ít vấn đề, thế mới tài 😆.

    Thì cái jj này có vẻ như nó đang mở ra được tính linh hoạt trong việc "cam kết" mã. Tưởng tượng bạn đang làm việc trên một dự án, đang ở nhánh này, muốn sang nhánh khác để sửa, nhưng mà lại đang viết dở ở nhánh này, thế là phải stash, rồi checkout, rồi commit, rồi merge hoặc rebase lại vào nhánh cũ... nhìn chung quá trình làm việc với git nghiêm ngặt đến mức cứng nhắc, cần nhiều thao tác để giải quyết một vấn đề, chưa kể cái cây commit (commit-tree) nữa thì ôi thôi, khỏi xem cho đỡ nhức mắt. Thế nên ông jj này đang làm cách nào đó để bạn khỏi cần phải quan tâm đến các nhánh luôn, sửa trực tiếp vào commit. Nghe ảo nhỉ 😂.

    Đấy mới lĩnh hội được đến đấy, hy vọng sau n lần đọc lại nữa mình sẽ viết được một bài chi tiết hơn về công cụ này.

    » Xem thêm
  • Gòi gòi tới công chiện gòi 🤤🤤🤤

    » Xem thêm

Vấn đề

Chúng ta luôn muốn biết có bao nhiêu người sử dụng trang web, theo dõi lượt truy cập hay là cần xác định được phiên của người dùng duy nhất.

Có một cách đơn giản để làm điều đó là yêu cầu người dùng đăng nhập, lúc đó chúng ta dễ dàng bắt được phiên thông qua ID người dùng đã lưu trong hệ thống. Cách này tốt nhưng không phải lúc nào cũng có thể bắt người dùng đăng nhập. Vì thế chúng ta cần tìm ra một giải pháp thay thế chức năng đăng nhập để định danh người dùng.

FingerprintJS là gì

FingerprintJS là một thư viện giúp nhận dạng thiết bị có độ chính xác cao nhất cho thiết mobile và web. FingerprintJS hỗ trợ định danh đa nền tảng từ Android, IOS đến Trình duyệt web.

Chúng ta biết rằng trình duyệt là cầu nối cho người dùng sử dụng trang web. Bản thân trình duyệt chứa rất nhiều thông tin về chính nó cũng như thông tin người dùng như loại trình duyệt, phiên bản, kích thước hiển thị, hệ điều hành, địa chỉ IP... và rất nhiều những thông tin nữa. Hãy truy cập vào https://coveryourtracks.eff.org để biết thêm những thông tin trình duyệt có thể "lấy" từ bạn. Những thông tin đó nếu được khai thác và xử lý hợp lý có thể cho ra một định danh duy nhất cho người dùng đang sử dụng.

Có thể chúng ta đã từng đối mặt với vấn đề cần định danh được người dùng mà không cần thông qua chức năng đăng nhập. Vì thế ta cần tìm cách để đánh dấu được người dùng đã từng sử dụng ứng dụng hay chưa. Một cách đơn giản là sinh ra một chuỗi định danh ngẫu nhiên rồi lưu vào Cache. Cách làm này nhanh và dễ nhất nhưng nếu xoá Cache thì mọi thứ lại như mới. Do đó chúng ta cần một giải pháp định danh người dùng tốt hơn.

Bạn có thể tự tạo thuật toán để tạo ra định danh dựa trên những dữ liệu thu thập được từ trình duyệt hoặc sử dụng thư viện FingerprintJS để làm điều đó. FingerprintJS có hai phiên bản là Open Source và Pro. Đối với phiên bản Open Source độ chính xác theo họ công bố là lên tới 60% còn với Pro thì lên đến 99.5%. Tuy nhiên khi dùng Pro bạn sẽ phải gọi đến server của FingerprintJS để tiến hành định danh và giới hạn 20.000 request mỗi tháng. Nếu quá số lượng đó thì bạn cần trả thêm tiền để sử dụng.

FingerprintJS sẽ tính toán dựa trên những dữ liệu thu thập được để đưa ra một chuỗi định danh người dùng như là:

x6e9RzbUC2P96yckcMih

Cách sử dụng

FingerprintJS cung cấp nhiều cách sử dụng khác nhau.

Sử dụng qua CDN:

  const fpPromise = import('https://openfpcdn.io/fingerprintjs/v3')
    .then(FingerprintJS => FingerprintJS.load())

  fpPromise
    .then(fp => fp.get())
    .then(result => console.log(result.visitorId))

Hoặc thông qua npm:

npm i @fingerprintjs/fingerprintjs
import FingerprintJS from '@fingerprintjs/fingerprintjs'

const fpPromise = FingerprintJS.load();

(async () => {
  const fp = await fpPromise
  const result = await fp.get()
  console.log(result.visitorId)
})()

Để sử dụng phiên bản Pro, bạn truy cập vào FingerprintJS đăng ký tài khoản, sau đó hệ thống sẽ hiển thị mã code để gắn vào trang web.

FingerprintJS tracking code

Tổng kết

FingerprintJS là một giải pháp để định danh người dùng nhanh chóng với độ chính xác cao mà không cần đăng nhập. Blog của tôi cũng đang sử dụng FingerprintJS để mang lại trải nghiệm tốt nhất cho người đọc. Nếu dự án tiếp theo của bạn có yêu cầu tracking người dùng mà không đăng nhập thì bạn biết phải làm gì rồi chứ!

Cao cấp
Hello

Tôi & khao khát "chơi chữ"

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Bạn đã thử viết? Và rồi thất bại hoặc chưa ưng ý? Tại 2coffee.dev chúng tôi đã có quãng thời gian chật vật với công việc viết. Đừng nản chí, vì giờ đây chúng tôi đã có cách giúp bạn. Hãy bấm vào để trở thành hội viên ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (2)

Nội dung bình luận...
Avatar
Ẩn danh1 năm trước
Lúc trước mình nhớ bên này ra mắt tool anti browers mà nhỉ giờ tìm mãi không ra hay do nó đổi thành dự án này rồi nhỉ
Trả lời
Avatar
Xuân Hoài Tống1 năm trước
Thế ạ, mình cũng chỉ nghe đến thư viện này giúp định danh trình duyệt. Nhưng vừa rồi họ mới chấm dứt bản miễn phí và bắt trả phí rồi, thế là đành phải chuyển qua phiên bản open source với độ chính xác thấp hơn chỉ khoảng 60% theo họ nói.
Avatar
Gin Na2 năm trước
@gif [tIeCLkB8geYtW] Thư viện hay, phải login vào cmt cho bạn
Trả lời
Avatar
Xuân Hoài Tống2 năm trước
Cảm ơn bạn đã tạo động lực cho mình
Bấm hoặc cuộn mạnh để sang bài mới