Trong thế giới công nghệ hiện đại, các hệ thống chống gian lận ngày càng trở nên tinh vi hơn. Ngoài việc sử dụng Canvas, các tham số như Tác nhân người dùng và bộ nhớ trình duyệt cũng được sử dụng rộng rãi để nhận dạng duy nhất người dùng và phát hiện hoạt động gian lận. Chúng ta hãy xem xét kỹ hơn về họ. #### Lịch sử và mục đích của User-Agent Tác nhân người dùng là một chuỗi được trình duyệt gửi đến máy chủ theo yêu cầu HTTP, chứa thông tin về loại thiết bị, hệ điều hành, trình duyệt và phiên bản của nó. Xuất hiện trong thời kỳ Internet sơ khai, Tác nhân người dùng phục vụ việc điều chỉnh nội dung web cho phù hợp với nhiều thiết bị khác nhau. Ngày nay nó không chỉ được sử dụng để hiển thị các trang web mà còn được sử dụng trong các hệ thống chống gian lận. ###### Tác nhân người dùng được sử dụng ở đâu? • **Chủ đề chính của trình duyệt:** Dòng Tác nhân người dùng có sẵn thông qua navigator.userAgent. Nó thường được phân tích để nhận dạng thiết bị ban đầu. • **Nhân viên web:** Trong các luồng công việc, quyền truy cập vào Tác nhân người dùng bị hạn chế nhưng các API như navigator.userAgentData cho phép bạn lấy thông tin về nền tảng. • **Nhân viên phục vụ:** Tương tự như Web-Workers, Service Workers có thể làm việc gián tiếp với Tác nhân người dùng nhưng yêu cầu một luồng chính để phân tích cú pháp trực tiếp. • **Yêu cầu HTTP:** Việc xử lý Tác nhân người dùng phía máy chủ cho phép bạn xác định các thiết bị và kiểm tra sự tuân thủ của chúng với các thông số khác. ###### Sự cố và thay thế Tác nhân Người dùng Kẻ tấn công có thể thay đổi Tác nhân người dùng thông qua cài đặt trình duyệt hoặc sử dụng trình duyệt chống phát hiện. Điều này tạo ra khó khăn trong việc nhận dạng, nhưng các hệ thống chống lừa đảo hiện đại sử dụng mối tương quan với các tham số khác (ví dụ: địa chỉ IP hoặc dấu vân tay Canvas và WebGL). Hãy xem các ví dụ về dòng Tác nhân người dùng trông như thế nào, hãy mở trang browserleaks.com/ip trong trình duyệt của chúng tôi:  Tác nhân người dùng: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 ###### Dữ liệu nào được sử dụng để tạo dòng Tác nhân người dùng? Định dạng chung theo đặc điểm kỹ thuật: Tác nhân người dùng: Sản phẩm/Phiên bản (Thông tin hệ thống và trình duyệt) Công cụ/Phiên bản (Thông tin công cụ) Trình duyệt/Phiên bản 1. **Sản phẩm/Phiên bản** - mã nhận dạng và phiên bản sản phẩm phần mềm Ví dụ: Mozilla/5.0 1. **Thông tin bổ sung về nền tảng** Ví dụ: (Windows NT 10.0; Win64; x64) • Loại nền tảng - mã nhận dạng hệ điều hành Ví dụ: Windows NT 10.0 • Architecture - thông tin về kiến trúc hệ thống Ví dụ: Win64; x64 3. **Công cụ/Phiên bản** - mã nhận dạng và phiên bản của công cụ kết xuất Ví dụ: AppleWebKit/537.36 4. **Thông tin tương thích** Ví dụ: (KHTML, như Gecko) 5. **Thông tin trình duyệt** - ID/phiên bản trình duyệt Ví dụ: Chrome/131.0.0.0 6. **Phiên bản/điểm đánh dấu tương thích** được khai báo về khả năng tương thích - Thông tin về khả năng tương thích với các trình duyệt khác Ví dụ: Safari/537.36 Dòng Tác nhân người dùng trông như thế này trong trình duyệt Chrome trên thiết bị di động:  Lưu ý rằng dòng Tác nhân người dùng là thông tin chính cho hệ thống Chống lừa đảo; một lượng lớn dữ liệu được thu thập từ trình duyệt của người dùng bằng các API khác sẽ được so sánh về mức độ tuân thủ với thông tin nhận được trong dòng Tác nhân người dùng. Ở trên, chúng ta đã xem xét một ví dụ về việc lấy Tác nhân người dùng từ các tiêu đề http được truyền đi. Hệ thống chống lừa đảo cũng nhận được thông tin về trình duyệt sử dụng JavaScript. Hãy mở trang browserleaks.com/javascript/ và xem thông tin nhận được từ trình duyệt của chúng tôi:  Trên trang này, trang web thu thập thông tin về trình duyệt và hệ thống của người dùng bằng cách sử dụng hai API khác nhau: API Điều hướng cũ và API Gợi ý Máy khách Tác nhân Người dùng hiện đại. Hãy so sánh thông tin nhận được từ trình duyệt Chrome (trái) và Firefox (phải):  Trong ví dụ này, chúng tôi thấy rằng có những khác biệt đáng kể giữa hai trình duyệt: lượng thông tin được trả về, định dạng thông tin và những hạn chế trong việc hỗ trợ API Gợi ý Máy khách Tác nhân Người dùng trong trình duyệt Firefox. Chúng tôi có thể kết luận rằng các hệ thống chống gian lận có thể dễ dàng xác định sự khác biệt giữa chuỗi Tác nhân người dùng và công cụ trình duyệt. Hãy xem một ví dụ về sự thay thế như vậy, so sánh thông tin từ trình duyệt Firefox (trái) và trình duyệt chống phát hiện dựa trên công cụ Chrome (phải):  Sau khi thay thế, các giá trị BuildID và oscpu trong trình duyệt chống phát hiện không tương ứng và không giống như trình duyệt Firefox, có hỗ trợ cho API Gợi ý Máy khách Tác nhân Người dùng. Sự thay thế như vậy sẽ được hệ thống Chống lừa đảo chú ý rất nhanh. Hãy mở trang thử nghiệm của chúng tôi test-webapi.tech/ua trong trình duyệt Chrome và xem những cách khác để lấy Tác nhân người dùng có thể sử dụng hệ thống Chống lừa đảo:  Trong ví dụ này chúng ta chúng tôi lấy thông tin về Tác nhân người dùng và thông tin về trình duyệt của người dùng từ các tiêu đề http, trong chuỗi trình duyệt chính, trong Web Worker và trong Service Worker và so sánh kết quả:  Cùng với Tác nhân người dùng, từ trình duyệt của người dùng, hệ thống Chống lừa đảo có thể nhận thông tin về việc thiết bị có di động hay không, số lõi xử lý logic, dung lượng RAM trên thiết bị và số lượng điểm tiếp xúc đồng thời được thiết bị hỗ trợ. Chúng ta hãy xem xét kỹ hơn các thông số này trên trang thử nghiệm của chúng tôi:  Trong phần Main Thread Data, chú ý đến: **"sec-ch-ua-mobile"**: "?0" – thông tin thu được từ tiêu đề http cho biết rằng chúng tôi đang sử dụng trình duyệt trên máy tính để bàn "maxTouchPoints": 0 – cho biết thiết bị của chúng tôi không hỗ trợ Touch **"hardwareConcurrency"**: 12 – cho biết số lõi xử lý logic có sẵn cho trình duyệt **"deviceMemory"**: 8 – dung lượng RAM xấp xỉ tính bằng Gigabyte **"di động"**: false – thông tin nhận được bằng API gợi ý ứng dụng khách tác nhân người dùng cho biết thiết bị của chúng tôi không phải là thiết bị di động. #### Bộ nhớ trình duyệt. ###### Bộ nhớ được cấp phát và phép đo của nó Cài đặt bộ nhớ trình duyệt (deviceMemory, performance.memory) cung cấp thông tin về bộ nhớ khả dụng của thiết bị. Ví dụ: • navigator.deviceMemory trả về kích thước bộ nhớ tính bằng gigabyte. • performance.memory trên luồng chính cung cấp thông tin chính xác về mức sử dụng bộ nhớ hiện tại. ###### Cách sử dụng bộ nhớ trong chống gian lận 1. **Nhận dạng thiết bị:** Các thiết bị khác nhau phân bổ bộ nhớ khác nhau. Ví dụ: thiết bị di động thường có ít bộ nhớ hơn máy tính để bàn. 2. **Kiểm tra thay thế:** So sánh bộ nhớ được khai báo với mức sử dụng thực tế giúp xác định việc giả mạo tham số. ######Phương pháp giả mạo bộ nhớ • **Ẩn giá trị thực:** Kẻ tấn công có thể sử dụng tiện ích mở rộng của trình duyệt để thay đổi giá trị deviceMemory. • **Trình bày sai dữ liệu hiệu suất:** Ví dụ: trả về các giá trị trông có vẻ hợp lý nhưng không tương ứng với các thông số thực của thiết bị. Hãy kiểm tra thông tin trên trang thử nghiệm của chúng tôi về: • **jsHeapSizeLimit** - Kích thước bộ nhớ tối đa có thể được phân bổ cho JavaScript • **totalJSHeapSize** - Tổng kích thước của bộ nhớ được phân bổ • **usedJSHeapSize** - Kích thước của bộ nhớ được sử dụng thực sự  Trong phần **Dữ liệu luồng – phân tích bộ nhớ** chính, chúng tôi kiểm tra kích thước bộ nhớ trong trình duyệt và chúng tôi yêu cầu kiểm tra này 3 lần trong khoảng thời gian ngắn. Hãy thử thử nghiệm này trên thiết bị di động:  Chúng ta có thể nhận thấy rằng trình duyệt trên thiết bị di động làm tròn các giá trị đã cho. Hãy lặp lại thử nghiệm trong trình duyệt chống phát hiện bằng cấu hình thiết bị di động:  Trình duyệt chống phát hiện chỉ thay thế chính xác các giá trị cho một thuộc tính jsHeapSizeLimit; định dạng giá trị của các thuộc tính còn lại vẫn tương tự như định dạng của trình duyệt trên máy tính để bàn. Tập hợp các giá trị như vậy có thể là tác nhân kích hoạt các hệ thống chống gian lận. Cần lưu ý rằng thuộc tính performance.memory không được hỗ trợ trong tất cả các trình duyệt và việc phát hiện thành công các thuộc tính đó khi thay thế Tác nhân người dùng của một trình duyệt không hỗ trợ các thuộc tính được chỉ định cũng làm dấy lên nghi ngờ trong các hệ thống Chống gian lận. ###### Tác nhân người dùng sử dụng Amazon làm ví dụ Lấy trang web amazon.com làm ví dụ, hãy xem trang web nhận được thông tin gì về Tác nhân người dùng. Hãy xem xét thông tin được truyền trong tiêu đề http:  Trang web nhận được thông tin mà chúng tôi quan tâm sau đây về thiết bị của người dùng từ tiêu đề http: bộ nhớ thiết bị: 8 giây-ch-thiết bị-bộ nhớ: 8 sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24" sec-ch-ua-mobile: ?0 sec-ch-ua-nền tảng: "Windows" sec-ch-ua-platform-version: "10.0.0" tác nhân người dùng: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Bây giờ, hãy kiểm tra thông tin nào liên quan đến Tác nhân người dùng mà trang web đã nhận được bằng JavaScript:  Trang web lấy thông tin chi tiết về trình duyệt, phiên bản trình duyệt, nhà sản xuất trình duyệt, nền tảng, kích thước bộ nhớ, hỗ trợ Touch trên thiết bị, số lõi xử lý sử dụng các API khác nhau. #### Phần kết luận Tác nhân người dùng và bộ nhớ trình duyệt là những thông số chính để phân biệt người dùng trong hệ thống chống lừa đảo. Việc sử dụng chúng kết hợp với các yếu tố khác như lấy dấu vân tay Canvas và các API khác cho phép tạo ra các thuật toán đáng tin cậy để phát hiện hoạt động gian lận. *Bannykh MV*