Dấu vân tay Canvas biến những khác biệt nhỏ khi cùng một lệnh vẽ được kết xuất trên các cấu hình phần cứng và phần mềm khác nhau thành mã nhận dạng, và hiếm khi được dùng riêng lẻ. Cách ứng phó hợp lý không phải là làm giá trị thay đổi mỗi lần, mà là giữ các đặc trưng trong cùng một môi trường nhất quán với nhau.
Nguyên lý của dấu vân tay Canvas không phức tạp, nhưng nhiều biện pháp đối phó thường được truyền miệng lại đi theo hướng ngược với điều hữu ích.
Cùng một lệnh, máy khác nhau cho kết quả khác nhau
Canvas là thành phần vẽ do HTML5 cung cấp, cho phép trang web dùng script để vẽ hình và chữ. Cùng một lệnh vẽ có thể cho kết quả kết xuất hơi khác nhau trên các thiết bị khác nhau do những khác biệt nền tảng như hệ điều hành, phiên bản trình duyệt, thư viện phông chữ và driver đồ họa. Bằng mắt thường gần như không nhận ra, nhưng khi nội dung Canvas được xuất thành dữ liệu, các khác biệt đó trở thành những giá trị có thể so sánh.
Quy trình đại khái như sau: trang web trước tiên vẽ một số hình và chữ, sau đó dùng toDataURL() để xuất kết quả thành chuỗi Base64. Chuỗi này có thể được dùng làm mã nhận dạng. Các thiết bị khác nhau tạo ra kết quả xuất khác nhau, vì vậy trong nhiều trường hợp giá trị là duy nhất. Xóa Cookie không ảnh hưởng đến nó, và xóa cache cũng vậy.
Nó hiếm khi được sử dụng riêng lẻ
Một giá trị Canvas đơn lẻ có tác dụng hạn chế và có thể thay đổi khi trình duyệt được nâng cấp hoặc driver đồ họa được cập nhật. Trong thực tế, Canvas thường được kết hợp với một nhóm đặc trưng khác để kiểm tra chéo:
- Dữ liệu đồ họa như WebGL, danh sách phông chữ và mẫu card đồ họa
- Dữ liệu môi trường như UA, múi giờ, ngôn ngữ và độ phân giải màn hình
- Dữ liệu phiên như Cookie, bộ nhớ cục bộ và điểm thoát mạng
Lý do kết hợp các tín hiệu này là để kiểm tra tính nhất quán. Từng mục riêng lẻ có thể nằm trong phạm vi bình thường, nhưng khi ghép lại, các mâu thuẫn sẽ rất dễ thấy: múi giờ đặt ở Hoa Kỳ, danh sách ngôn ngữ toàn tiếng Trung, và giá trị Canvas phù hợp với đồ họa tích hợp trong khi UA lại khai báo một thiết bị cao cấp đời mới. Nền tảng không cần chứng minh bạn là ai. Họ chỉ cần nhận ra rằng nhóm đặc trưng này không giống một máy thật.
Tắt Canvas có thể khiến bạn nổi bật hơn
Phản ứng đầu tiên của nhiều người là tắt Canvas, nhưng kết quả có thể hoàn toàn ngược lại.
Hầu như mọi trình duyệt của người dùng bình thường đều hỗ trợ Canvas. Một môi trường rõ ràng không hỗ trợ Canvas là nhóm thiểu số về mặt thống kê, gần như tự cho thấy rằng nó đã được xử lý đặc biệt. Còn có một vấn đề thực tế hơn: nhiều website phụ thuộc vào Canvas để cắt ảnh, hiển thị biểu đồ và kết xuất CAPTCHA. Khi tắt Canvas, các chức năng của trang có thể gặp lỗi và lại xuất hiện thêm một dấu hiệu bất thường.
Một cách khác là dùng một bộ giá trị ngẫu nhiên mới ở mỗi lần truy cập. Hướng này cũng có vấn đề: dấu vân tay của thiết bị thật có tính ổn định. Một môi trường thay đổi mỗi lần sẽ có hành vi khác với thiết bị bình thường và có thể dễ bị tách riêng, đánh dấu hơn. Bản thân việc ngẫu nhiên hóa cũng có thể là một tín hiệu nhận diện được.
Hướng hợp lý là tính nhất quán nội bộ
Thay vì làm mọi thứ khác nhau ở mỗi lần truy cập, mục tiêu gần với thực tế hơn là giữ các đặc trưng trong cùng một môi trường nhất quán với nhau và khiến tổng thể không có gì bất thường.
Trong thực tế, các đặc trưng phải hỗ trợ lẫn nhau: múi giờ, ngôn ngữ và vị trí địa lý của IP đầu ra cần khớp nhau. Thiết bị mà UA khai báo và năng lực đồ họa mà Canvas cùng WebGL thể hiện cũng phải ở cùng một phân khúc. Môi trường của cùng một tài khoản cần ổn định lâu dài và không nên có thay đổi rõ rệt khi truy cập lặp lại. Đừng phụ thuộc vào các plugin chỉ đơn giản tắt một tính năng nào đó vì chúng thường tạo ra đặc trưng dễ nhận thấy hơn. Khi có thể, hãy giảm số script bên thứ ba chạy trên trang để thu hẹp bề mặt có thể bị thu thập.
Nếu nhiều môi trường cần khác biệt với nhau, đó là vấn đề mà cách ly môi trường phải giải quyết. Những công cụ như PurpleMark khi cách ly môi trường cho nhiều tài khoản thường cấp cho mỗi tài khoản một môi trường cố định thay vì để các tham số nhảy ngẫu nhiên, vì điều nền tảng thực sự quan tâm là nhóm đặc trưng này có ổn định và hợp lý với nhau hay không.
Tóm tắt
Canvas có thể dùng để theo dõi vì nó biến những khác biệt nhỏ của phần cứng và phần mềm thành một chuỗi ổn định, có thể so sánh. Cách ứng phó hiệu quả không phải là tắt Canvas hay làm cho giá trị thay đổi hỗn loạn, mà là khiến nó kể cùng một câu chuyện với các đặc trưng khác trong cùng môi trường. Trông bình thường an toàn hơn trông khác biệt.


