Các phương pháp tracking online

Các phương pháp tracking online
Photo by Matthew Henry from Unsplash

Chắn hẳn bạn đã từng nghe thuật ngữ “cookie” ở đâu đó rồi phải không? Ở đây tôi muốn nói đến thuật ngữ khi bạn duyệt web, không phải là một loại bánh. Bạn đã từng nghe nói đến fingerprint chưa? Bạn biết mối quan hệ giữa cookie và việc theo dõi chúng ta online chứ?

Liệu bạn đã biết hết nhưng phương thức khác nhau được dùng để theo dõi chúng ta chưa? Vâng, có thể nói “tài năng có hạn mà thủ đoạn vô biên”, mỗi ngày khi chúng ta truy cập Internet, chúng ta luôn gặp phải thiên la địa võng các hình thức khác nhau để theo dõi.

Theo dõi (tracking) có thể hiểu là việc thu thập dữ liệu về các hoạt động trên Internet của một người. Việc thu thập dữ liệu này diễn ra ở nhiều dịch vụ khác nhau, nhưng mọi thông tin đều được tập hợp lại và liên kết đến đúng đối tượng. Việc liên kết đúng đối tượng này cực kỳ quan trọng, nếu không làm được thì dữ liệu thu về chỉ là những mảng rời rạc không có nhiều ý nghĩa.

Trong một bài viết trước đây, tôi đã đưa ra một vài phương thức mà Facebook đã sử dụng để tracking người dùng. Thực ra không phải chỉ có Facebook đâu, rất nhiều công ty cũng đang sử dụng nhưng thủ đoạn giống như Facebook vậy.

Hàng chục năm trước, khi Internet vẫn ở thuở sơ khai, quyền riêng tư của mỗi người đã bị đe doạ. Ngày này, chúng ta phải đối mặt với nhiều hiểm hoạ hơn nữa khi mà công nghệ ngày càng phát triển đi kèm với các phương thức thu thập, lưu trữ và xử lý thông tin mới.

Bài viết này mang tính chất tổng hợp và sẽ đưa ra thông tin về một số phương thức thường được sử dụng để theo dõi người dùng, từ đó chúng ta sẽ có cách phòng chống tương ứng, nhằm bảo vệ quyền riêng tư của mình.

Lưu ý rằng, bài viết sẽ không nhắc lại các phương pháp mà tương tự như cách Facebook đã sử dụng. Bài viết cũng chỉ đưa ra các phương pháp tracking khi chúng ta online, các phương pháp theo dõi người dùng khác (đây là một chủ đề rất lớn) xin dành cho bài viết sau.

Các phương pháp tracking

Search engine

Một trong số những search engine được dùng nhiều trên thế giới - Google – cũng chính là công cụ thu thập thông tin người dùng nhiều nhất. Mọi thông tin mang tính cá nhân như tên, ngày sinh cho tới lịch sử tìm kiếm, những link chúng ta vào xem, thiết bị, trình duyệt cũng như địa chỉ của chúng ta đều bị thu thập cả.

Lý do (được công bố) cho việc thu thập thông tin cá nhân này là để cá nhân hoá trải nghiệm người dùng. Nhưng đằng sau đó, những thông tin này cũng giúp Google tăng thêm dữ liệu phục vụ cho Big data mà bằng việc khai thác nó, Google sẽ có thu nhập rất cao bằng cách hiển thị quảng cáo đúng với sở thích của từng người.

Chỉ bằng một công cụ là search engine của mình, chưa tính đến cả tá các công cụ khác, Google đã hiểu rất rõ về mỗi người. Chúng ta có thể cung cấp thông tin giả khi đăng ký các dịch vụ, chúng ta có thể đăng các status sống ảo không phải tâm trạng thật của mình. Nhưng chúng ta không thể nói dối một search engine được, không ai lại đi tìm kiếm những thứ mình không muốn tìm bao giờ cả.

Dùng script

JavaScript đã và đang là một phần rất quan trọng của các trang web. Vì vậy, việc hỗ trợ JavaScript đã trở thành một tính năng bắt buộc (tuy nhiều trình duyệt như IE thì cũng không hỗ trợ tốt lắm). Do đó, việc sử dụng JavaScript để tracking mang lại hiệu quả rất lớn.

JavaScript được thực thi ở trình duyệt của người dùng, do đó, nó có thể thu thập được nhiều thông tin hơn so với những phương pháp khác. Một ví dụ điển hình của việc tracking bằng script chính là sử dụng Google Analytics.

Quy trình tracking thường được thực hiện như sau:

  1. Trình duyệt tải về một trang web, đây là một trang html có chứa thẻ script hoặc JavaScript được nhúng trực tiếp vào html.
  2. Trong số những script đó sẽ có một phần dùng để tracking. Lúc này việc tracking vẫn chưa bắt đầu, nó mới chỉ là chương trình mồi mà thôi.
  3. Chương trình mồi sẽ tải code tracking chính từ nguồn bên ngoài.
  4. Code tracking này sau khi được tải sẽ thực thi và thực hiện các hoạt động thu thập dữ liệu. Các thông tin được thu thập có thể bao gồm: các thông tin về trang hiện tại (URL, title, v.v…), các thông tin liên quan đến trình duyệt đang sử dụng (trình duyệt gì, hệ điều hành, kích thước màn hình, plugin, v.v…) và các thông tin trong cookie dùng để định danh người dùng.
  5. Sau khi thu thập được thông tin, một truy vấn sẽ được gửi lên máy chủ tracking kèm theo những thông tin thu được.

Đây là một quy trình đơn giản, trong thực tế, mọi việc có thể phức tạp hơn nhiều. Điển hình như trường hợp của Facebook SDK, JavaScript được tải về ngoài tracking nó còn phải đảm nhiệm thêm nhiều việc khác như hiển thị nút Like, khung comment, v.v…

Hơn nữa, việc tracking cũng không giới hạn chỉ ở nội dung trang web hiện tại. Nhiều công cụ tracking còn khủng hơn nữa, bắt luôn các event “click” để lưu lại thông tin khi người dùng chuyển sang một trang khác. Vâng, thu thập không chừa một thông tin gì.

Để che mắt thiên hạ, những script tinh vi có thể dùng thủ thật khác. Thay vì gửi truy vấn theo kiểu AJAX thông thường, các code tracking này tạo một URL để tải về một file tĩnh (thường là một file ảnh). Nhưng URL này sẽ được “đính kèm” thêm các tham số khác, kiểu như a.gif?b=xyz, ngoài ra để tránh cache (vì nếu cache sẽ không có truy vấn), một chuỗi ngẫu nhiên được gán thêm vào. Sau khi có URL rồi thì nó sẽ tìm cách truy cập URL này bằng cách gắn thêm thẻ img vào trang, mọi việc tiếp theo sẽ do trình duyệt đảm nhiệm.

Khi truy cập URL này, với người dùng, nó hoàn toàn giống với các truy vấn tải hình ảnh khác của trang web (cũng để che mắt, máy chủ tracking sẽ trả về 1 file ảnh kích thước 1x1, trong suốt nên nó gần như không ảnh hưởng gì đến nội dung trang). Vì vậy, nó rất khó để tìm ra tracking, kể cả với những người có hiểu biết về HTML và network. Với những truy vấn kiểu này thì third-party cookie sẽ được trình duyệt tự động gửi lên.

Web beacon

Có rất nhiều tên gọi khác nhau cho phương pháp tracking này: web beacon, web bug, tracking bug, tag, page tag, tracking pixel, pixel tag, 1x1 gif, clear gif. Đây là phương pháp được sử dụng trong trường hợp tracking đơn giản, tracking email hoặc sử dụng như phương án dự phòng khi JavaScript trên trình duyệt bị tắt.

Web beacon thường được cài đặt là một thẻ img dạng file gif có kích thước 1x1. Với kích thước như vậy, cộng với file gif này trong suốt thì người dùng hoàn toàn không thể nhận biết khi truy cập một trang web. Nếu chỉ là phương án dự phòng của script thì thường thẻ img này sẽ được đặt trong thẻ noscript.

URL để truy cập file gif 1x1 cũng không phải là một URL tĩnh thông thường, nó sẽ kèm theo các tham số để tracking. Và tất nhiên, để tránh cache, nó cũng phải chứa một chuỗi ngẫu nhiên. Tuy nhiên, phương thức này có nhiều hạn chế hơn so với script. Bởi vì URL này được gán sẵn ngay khi tải trang, nên các tham số của nó là hard code, không giống như JavaScript là một ngôn ngữ lập trình cho phép thu thập nhiều thông tin hơn.

Và cũng trong phương pháp tracking này, mọi việc hoàn toàn do trình duyệt đảm nhiệm, trong đó có cả việc gửi và nhận cookie. Ngoài việc sử dụng thẻ img, một số công cụ như Google Analytics lại sử dụng iframe để tracking. Về bản chất thì hoàn toàn giống nhau, họ đang cố gắng dùng một thẻ nào đó nhằm tạo ra truy vấn đến máy chủ tracking.

Đương nhiên rồi, việc tracking hoàn toàn phụ thuộc vào truy vấn, nếu không có truy vấn gửi đến máy chủ tracking thì hoàn toàn không có thông tin gì được gửi lên. Tuy nhiên, những truy vấn này rất khó nhận biết, do nó lẫn vào hàng trăm ngàn truy vấn thông thường khác của một trang web.

Trong trường hợp sử dụng web beacon để tracking, HTTP referrer chính là thứ giúp máy chủ tracking biết được người dùng đang truy cập trang web nào.

HTTP referrer là một header trong gói tin HTTP. Giá trị của header này được thiết lập hoàn toàn tự động và rất khó thay đổi bằng công cụ. Bất cứ khi nào có truy vấn, HTTP referrer sẽ được gán giá trị là URL của trang web trước đó mà người dùng truy cập.

Ví dụ, khi bạn click vào một link, trình duyệt của bạn sẽ chuyển sang tải trang mới về, đồng thời trang truy vấn tải trang đó sẽ có URL của trang web chứa link mà bạn vừa click.

referrer

HTTP Referrer luôn xuất hiện trong mỗi truy vấn khi tồn tại một trang web “trước đó”. Ngay cả với các truy vấn tải thêm tài nguyên (CSS, JS, ảnh) của một trang web (mà trang nào giờ cũng rất nhiều truy vấn kiểu này), referrer cũng xuất hiện, lúc này, nó chính là trang web mà chúng ta đang xem.

extra referer

Trường hợp web beacon cũng vậy, referrer sẽ tự động được gán giá trị chính là URL của trang web hiện tại mà người dùng đang xem. Đây chính là giá trị quan trọng nhất để máy chủ tracking biết được thông tin về nội dung mà người dùng đang theo dõi.

DNS

DNS (Domain Name System – hệ thống tên miền) là một hệ thống quan trọng thuộc loại hàng đầu trên Internet hiện nay. Bất cứ khi nào chúng ta click một đường link, mở một trang web, gửi email, khởi động app, v.v… thì DNS chính là dịch vụ đầu tiên được dùng đến. Trong nội dung bài viết này, chúng ta chỉ nhắc đến một khía cạnh của DNS: phân giải tên miền (nhiều lúc nó cũng được gọi là DNS – Domain Name Server hoặc DNS server).

Việc phân giải tên miền này rất quan trọng, nó là cơ sở để giúp chuyển đổi các tên miền mà con người dễ ghi nhớ (ví dụ example.com) thành địa chỉ IP tương ứng (93.184.216.34). Thực ra, địa chỉ IP là một chuỗi các bit, 0x5db8d822 (và máy tính chỉ làm việc với chuỗi này thôi), viết địa chỉ IP thành 4 trường như vậy cũng đã là cách viết cho con người dễ hiểu rồi.

Địa chỉ IP là thứ máy tính có thể hiểu và xử lý, đo là cần thiết để kết nối mạng. DNS sẽ là dịch vụ được gọi đầu tiên, khi phát sinh bất cứ truy cập mạng nào. Vì vậy, mỗi một thiết bị khi kết nối mạng đều phải được thiết lập một máy chủ DNS để phân giải tên miền.

Mặc định, mỗi khi kết nối vào mạng, bất kể là mạng gia đình, wifi công cộng hay các hình thức kết nối khác, một thiết lập DNS sẽ được cung cấp cho người dùng (kể cả khi các mạng đó không có thiết lập DNS gì thì cũng có thiết lập mặc định từ ISP). Vấn đề là các máy chủ DNS này vi phạm quyền riêng tư của người dùng, và nhiều khi chúng cũng rất chậm.

Nhiều người dùng cảm thấy yên tâm khi truy cập các trang web sử dụng giao thức HTTPS với dấu hiệu màu xanh lá cây báo an toàn từ trình duyệt. Đó là dấu hiệu của việc mọi giao dịch với trang web đó đã được mã hoá, khiến người khác không thể đọc được những nội dung nhạy cảm. Thế nhưng, dù dùng giao thức gì cũng không thể ngăn cản được các máy chủ DNS nắm được thông tin về trang web mà họ truy cập.

Do đó, các nhà cung cấp dịch vụ DNS (như Google DNS chẳng hạn), các ISP, các nhà cung cấp mạng di động vẫn hoàn toàn biết được danh sách các trang web mà một người dùng truy cập.

Các nhà mạng đã thay đổi rất nhiều trong những năm qua, và giờ có đang có những ý tưởng mới về việc kiếm tiền từ dữ liệu truy cập mạng của người dùng (dễ dàng nhất là bán dữ liệu). Với tất cả nhưng lo lắng về quyền riêng tư của các công ty như Facebook, Google, chúng ta cần lo lắng hơn nữa về các ISP khi mà họ đang có nhiều cơ hội xâm nhập quyền riêng tư của người dùng.

Bằng cách sử dụng các phương thức tracking, thậm chí kết hợp nhiều phương thức cùng một lúc, tracker có thể thu thập một lượng rất lớn dữ liệu. Từ đó, họ có thể xây dựng một hồ sơ cho người dùng để phục vụ cho marketing hoặc bán dữ liệu.

Tracking bằng ứng dụng

Google bị phát hiện sử dụng ứng dụng Chrome để tracking người dùng, ngay cả khi họ sử dụng chế độ duyệt web riêng tư.

Không chỉ Google mà rất nhiều tổ chức khác cũng đang sử dụng cách thức tương tự, điển hình là Facebook.

Không phải lúc nào cũng dễ dàng nhúng script hay beacon tag vào một trang web khác (chỉ có thể nhúng khi người phát triển trang web đó tự làm mà thôi), nhưng Google, Facebook và rất nhiều tổ chức khác vẫn có thể tracking được nhờ phương thức này.

Ví dụ, bên dưới là URL dẫn đến trang example.com từ trang tìm kiếm của Google:

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=2ahUKEwiH88Ln_6LeAhUBEywKHRU5DIwQFjAAegQICBAB&url=http%3A%2F%2Fexample.com%2F&usg=AOvVaw0QIAsLzZsb_ibkGAghr9uP

Bằng cách này, khi người dùng click vào một link để truy cập trang đó, thực ra họ đang click vào link được Google chuẩn bị sẵn. Khi đó một truy vấn sẽ được gửi đến Google và họ chỉ cần đơn giản ghi lại hoạt động này (URL mà người dùng sắp truy cập) rồi redirect người dùng tới địa chỉ đó. Quá trình này diễn ra rất nhanh và nhiều người thậm chí không nhận ra sự thay đổi và cứ nghĩ rằng mình đang truy cập URL một cách trực tiếp.

Nguy hiểm hơn, ngay cả khi bạn copy link từ Google thì thứ bạn copy được cũng là URL đã được chỉnh sửa để tracking chứ không phải URL gốc của trang web. Nên khi gửi URL này cho người khác, thì những người đó cũng sẽ bị tracking mà không cần trang web phải nhúng bất kỳ mã tracking nào.

Nhiều tổ chức khác cũng sử dụng phương thức này, ví dụ Facebook:

https://l.facebook.com/l.php?u=https%3A%2F%2Fblog.drewolson.org%2Fdependency-injection-in-go%3Ffbclid%3DIwAR0Cv9kqWvbIFwdgHs-6GpnUSC4Ub3AhTPZ6EGqmTygqDG1b3QcBydc9AOo&h=AT1ePNXYhzU-_Bd1pfjF9QZ9a8DGKBg4U07Yf-TAri8XOt7YV19NqM7N5V3mGoeo3u4lhjbxnPm6vanQPLFz8BsQmkQChGNwzb6xxOO-9NUQfY91ANPiBI1A7VsvPTx3wtnhir4JFobXqckV_GSCc_FZTEZy8Q

Không chỉ Google, Facebook mà hầu như bất cứ một dịch vụ nào cho phép chia sẻ link hiện nay cũng đều sử dụng phương thức tương tự để tracking người dùng. Nhiều dịch vụ không sử dụng phương thức biến đổi URL lộ liễu như trên mà dùng phương pháp rút gọn URL (ví dụ Twitter). Về cơ bản thì dù rút gọn URL hay làm URL dài thêm thì nguyên lý tracking cũng không thay đổi.

Các phương thức định danh người dùng

Như đã nói ở trên, việc thu thập dữ liệu cũng rất cần liên kết những dữ liệu đó với đúng người. Làm thế nào để biết được đâu ra dữ liệu về hoạt động của ai trên Internet, ngay cả khi họ dùng nhiều thiết bị khác nhau, truy cập nhiều dịch vụ khác nhau? Đây chính là điểm quan trọng nhất, nếu không làm được, thì những dữ liệu thu được cũng không mang lại nhiều giá trị thông tin.

Trong phần này, chúng ta sẽ tìm hiểu các phương pháp để xác định người dùng khi thu thập dữ liệu. Mỗi một dữ liệu thu thập được sẽ đi kèm thêm một vài thông tin để kiểm tra xem đó là dữ liệu của ai, và dưới đây là các phương thức đó.

Cookie là những thông tinh được lưu trên máy tính của người dùng bởi trang web mà người đó truy cập. Mỗi trình duyệt sẽ có cách thức lưu trữ và truy cập cookie khác nhau, nhưng về cơ bản, dữ liệu sẽ được ghi vào các file kích thước nhỏ (Firefox thì gộp hết thành 1 file).

Cookie thường được sử dụng để lưu trữ các tuỳ biến của website, ví dụ những thiết lập về ngôn ngữ, menu, v.v… Khi bạn truy cập trang đó lần nữa, những thông tin được lưu trữ đó sẽ tự động được gửi cho máy chủ của website, giúp trang web hiện thị đúng những nội dung theo ý của bạn.

Cookie có thể được dùng để lưu trữ bất cứ thông tin gì, trong đó có cả những thông tin đăng nhập, và tracking. Tất nhiên, nó chỉ có thể lưu trữ những thông tin mà chúng ta cung cấp mà thôi. Một trang web không thể truy cập được hệ thống file trên máy của chúng ta.

Mặc định, việc lưu trữ cũng như truy cập, gửi cookie lên máy chủ hoàn toàn tự động và trong suốt với người dùng. Tuy vậy, các trình duyệt đều cho phép chúng ta tuỳ biến một số cách thức hoạt động liên quan đến cookie như xoá cookie khi thoát, chặn cookie từ trang nào đó, v.v…

Cookie chính là phương tiện tốt nhất để lưu trữ “state” giữa người dùng và website. Phần lớn cookie là tốt cho người dùng, nhưng một phần nhỏ trong số chúng lại đang xâm phạm nghiêm trọng quyền riêng tư của chúng ta.

Cookie có nhiều dạng: session cookie là những cookie chỉ tồn tại trong phiên làm việc hiện tại, nó chỉ được lưu trữ tạm thời và sẽ được xoá khi chúng ta đóng trình duyệt. Một loại khác là first-party cookie, đây là cookie được lưu trữ lâu dài (nhưng có thời hạn). Nó được sử dụng bởi trang web mà chúng ta truy cập.

Loại nguy hiểm nhất chính là third-party cookie, đây cũng là loại cookie được dùng để tracking. Tương tự như first-party cookie, loại cookie này cũng được lưu trữ lâu dài trên máy tính của chúng ta, tất nhiên là có thời hạn kèm theo. Nhưng third-party cookie đến từ những trang web mà chúng ta không hề truy cập, những trang web mà thậm chí chúng ta còn chẳng biết tới.

Việc vận dụng cookie vào tracking thường diễn ra như sau:

  1. Người dùng truy cập vào một trang web, dữ liệu tracking được gửi lên máy chủ (bằng script hoặc beacon tag), những dữ liệu này sẽ đi kèm cookie nếu có.
  2. Máy chủ khi nhận cookie sẽ tìm ra người dùng tương ứng và liên kết những dữ liệu vừa thu được với người dùng đó. Nếu không có cookie được gửi lên thì tìm cách định danh người dùng khác. Nếu không định danh được người dùng thì coi như đây là một người dùng mới và tạo “profile” cho người dùng đó.
  3. Máy chủ gửi lại cookie sẽ thiết đặt lại vào trình duyệt người dùng, phục vụ cho các tracking tiếp theo.

Supercookie

Supercookie có thể được lợi dụng để gán một giá trị dùng để định danh người dùng khi tracking. Supercookie thậm chí còn có thể tracking được nhiều hơn cookie thông thường (có thể tracking cả thời gian người dùng bỏ ra để đọc nội dung một trang web). Một ví dụ điển hình của supercookie là Flashcookie (còn được gọi là Local Share Objects - LSO).

Khác với cookie của trình duyệt, loại cookie này hoạt động không cần tới trình duyệt, và không có thời hạn. Nó được lưu trên máy tính của người dùng và không cần trình duyệt quản lý, vì vậy nó có thể được dùng để tracking nhiều trang với các domain khác nhau. Tuy nhiên, các trình duyệt hiện nay đều có cơ chế kiểm soát hoạt động của flash và supercookie.

Evercookie

Evercookie là những loại dữ liệu rất khó để loại bỏ một khi đã dính phải nó. Evercookie không phải một loại cookie cụ thể mà là tập hợp có nhiều phương thức lưu trữ khác trong. Mục đích của evercookie là để định danh người dùng, ngay cả trong trường hợp hợp họ đã xoá bỏ cookie, supercookie và các loại dữ liệu khác.

Evercookie sẽ sử dụng nhiều cơ chế lưu dữ liệu khác nhau, lưu ở nhiều nơi khác nhau với các định dạng khác nhau để người dùng không biết đâu là thông tin cần lưu, đâu là tracking. Và một khi có bất cứ dữ liệu nào bị xoá bỏ, ngay lập tức nó sẽ được tái tạo từ dữ liệu được lưu ở những nơi khác.

Ví dụ, khi người dùng xoá bỏ HTTP cookie, dữ liệu supercookie sẽ được dùng để tái tạo HTTP cookie vừa bị xoá, nếu supercookie cũng bị xoá thì Local Storage, Session Storage, IndexedDB, v.v… sẽ được dùng tới. Bằng cách này, dữ liệu tracking sẽ luôn tồn tại và được duy trì. Thỉnh thoảng, kỹ thuật này còn được gọi với cái tên “cookie respawning” hoặc “cookie syncing”.

Local Storage

HTML 5 có hai phương thức lưu trữ dữ liệu mới ở phía người dùng: Local Storage và Session Storage. Local Storage thường được sử dụng trong tracking, vì nó được lưu trữ lâu dài trên máy khách. Session Storage thì hạn chế hơn do nó chỉ tồn tại trong cửa sổ trình duyệt đang được mở và dữ liệu được lưu ở đó sẽ bị xoá khi trình duyệt bị đóng lại.

Local Storage có thể được sử dụng làm một phương án thay thế cho HTTP cookie, dùng để lưu trữ những dữ liệu định danh người dùng để tracking. Nó cũng là một nơi lưu trữ dữ liệu tốt trong evercookie.

Cache

Các trình duyệt đều có cơ chế cache, dùng để tối ưu hoá quá trình tải trang. Cơ chế này vốn có mục đích rất tốn, các tài nguyên tĩnh (CSS, JS, ảnh, v.v…) hay thậm chí cả nội dung trang web nhiều khi không có sự thay đổi trong một thời gian dài. Khi đó, thay vì gửi truy vấn và nhận dữ liệu từ máy chủ, trình duyệt dùng luôn dữ liệu đã cache trên máy người dùng để hiển thị, như vậy quá trình tải trang sẽ nhẹ nhàng hơn rất nhiều.

Thế nhưng, cơ chế này cũng có thể được dùng để tracking, đặc biệt, nó có thể tracking ngay cả khi trình duyệt đó đã bị disable JavaScript thì vẫn có thể định danh được người dùng. Với cơ chế này, một nội dung tương đối ổn định sẽ được đặt vào trang, khi người dùng truy cập trang, tracker có thể dùng JavaScript để kiểm tra liệu nội dung đó có được cache hay không. Nếu cache thì có nghĩa là đây là một người dùng cũ, và tìm cách định danh họ.

Thật trớ trêu là, các trình duyệt hiện này có phép tuỳ biến rất nhiều thiết lập liên quan đến cookie, nhưng các thao tác liên quan đến cache thì không đơn giản như vậy.

Dùng HTTP header

ETag

Gửi ETag header vào trong gói tin trả về có người dùng.

ETag: "UNIQUE_ID"

Sau đó, khi người dùng truy cập lại nội dung trang web đó, giá trị ETag nhận được trước đó sẽ được gửi lên (việc này trình duyệt tự động hoàn toàn):

If-None-Match: "UNIQUE_ID"

Tracker có thể dùng giá trị này để định danh người dùng.

Last-Modified

Cách làm này tương tự với cách sử dụng ETag. Gửi giá trị định danh vào header như sau:

Last-Modified: "UNIQUE_ID"

Thì khi người dùng truy cập vào trang web, trình duyệt cũng tự động gửi lên giá trị này:

If-Modified-Since: "UNIQUE_ID"

Fingerprint

Fingerprint có thể được sử dụng để xác định các thiết bị khác nhau và từ đó có thể xác định được người dùng, ngay cả khi các phương pháp bên trên không có tác dụng. Fingerprint của thiết bị đóng vai trò là giá trị dùng để định danh. Trước đây, kỹ thuật tracking này chỉ có tác dụng với ứng dụng web và người dùng chỉ dùng một ứng dụng mà thôi. Ngày nay, fingerprint có thể dùng để tracking nhiều trình duyệt khác nhau (nhưng vẫn cần cùng một thiết bị).

Canvas fingerprint

Canvas fingerprint là kỹ thuật thông dụng nhất của fingerprint. Tracking bằng kxy thuật này sẽ sử dụng JavaScript để tạo ra một bức ảnh canvas. Bức ảnh này được tạo ra dưới nền và chứa một vài ký tự. Việc render bức ảnh bằng canvas sẽ cho ra kết quả khác nhau với mỗi người, tuỳ thuộc vào hệ điều hành, trình duyệt, card đồ hoạ, font chữ, v.v…

Sự khác biệt này là không nhiều,nhưng đủ để định danh thiết bị, và từ đó có thể định danh được người dùng. Kết quả của phương pháp này có nhiều hạn chế hơn so với phương pháp cookie, nhưng là một phương pháp có thể hoạt động ở bất cứ môi trường nào, ngay cả khi người dùng sử dụng chế độ duyệt web riêng tư.

Các phương pháp fingerprint khác

Bên cạnh canvas fingerprint, nhiều phương pháp fingerprint khác cũng được sử dụng, ví dụ sử dụng API âm thanh, webRTC, v.v…

Một ví dụ là audio fingerprint, trong đó tracker sẽ kiểm tra âm thanh được tái tạo trên trình duyệt, thay vì một bức ảnh canvas. Những âm thanh được tái tạo này cũng khác nhau, tuỳ vào trình duyệt cũng như hệ điều hành của người dùng. Sự khác biệt này đủ để dịnh danh thiết bị và do đó, có thể định danh được người dùng.

Địa chỉ IP

Địa chỉ IP là một phương pháp định danh kinh điển, nhưng phương pháp này tỏ ra không tin cậy trong thời đại hiện nay, do IP của người dùng có thể thay đổi liên tục (IP động). Hơn nữa, thiết bị hiện nay cũng được nối mạng LAN trước khi kết nối với Internet khiến cho rất nhiều người dùng sẽ có chung một địa chỉ IP.

Địa chỉ IP bản thân nó rất khó để định danh người dùng, nhưng nó sẽ hiệu quả hơn khi kết hợp với các phương pháp khác (ví dụ như fingerprint ở trên). Đặc biệt, với việc IPv6 đang được phổ biến rộng rãi, việc định danh người dùng có thể sẽ dễ dàng hơn, do mọi người dùng IPv6 sẽ không cần đến NAT nữa.

Header được thêm vào bởi provider

Nhà mạng di động Verizon ở Mỹ đã chèn header vào truy vấn của người dùng nhằm mục đích định danh. Các header này được nhà mạng chèn vào gói tin trong quá trinh di chuyển, hoàn toàn không thể bị ảnh hưởng bởi người dùng.

Mỗi người dùng Verizon được gán một ID và ID này được truyền đi dưới header X-UIDH. Tạm thời header này chỉ hoạt động với HTTP chứ chưa hoạt động với HTTPS, nhưng ai mà biết được tương lai sẽ như thế nào.

Verizon có thu tiền các website khi muốn truy cập thông tin người dùng của họ, thế nhưng ngay cả khi không trả tiền, bản thân header được chèn vào đã giúp các website định danh được người dùng (và biết luôn họ dùng Verizon).

Redirect

Đây là một biến thể của cơ chế tracking bằng cache, nhưng không phải cache nội dung trang web. Cơ chế định danh bằng redirect hoạt động như sau:

  1. Người dùng truy cập một trang tracking (có thể bằng script hoặc beacon tag), máy chủ sẽ kiểm tra xem thông tin định danh đã có hay chưa (ví dụ /track?id=xxx).
  2. Nếu chưa có thông tin định danh này trong URL (chỉ /track) thì tracker sẽ trả về code 301 (Permanent Redirect) hướng trình duyệt người dùng truy cập vào URL mới /track?id=xxx.
  3. Khi việc redirect này diễn ra, trình duyệt sẽ tạm thời cache thông tin redirect này. Lần sau khi người dùng lại truy cập /track, thì với thông tin cache từ trước, trình duyệt vẫn truy cập trang /track?id=xxx

Cơ chế này thuộc loại không tin cậy, do nó phụ thuộc vào cơ chế cache thông tin của trình duyệt, và không phải trình duyệt nào cũng hỗ trợ việc này.

Làm thế nào để bảo vệ sự riêng tư

Luôn cảnh giác

Hãy luôn tâm niệm rằng, một khi online sẽ luôn có người theo dõi mình. Vì vậy, cần tránh chia sẻ thông tin không khai, cũng như hạn chế quyền truy cập các thông tin cho ứng dụng. Thế giới ngày càng hiện đại, con người kết nối ngày càng dễ dàng, mỗi người cũng nên nâng cao ý thức tự bảo vệ bản thân.

Chính sách riêng tư

Trước khi đăng ký tên, tuổi, email và những thông tin cá nhân khác cho một dịch vụ, hãy dành thời gian để đọc chính sách riêng tư của họ. Chính sách này sẽ cho chúng ta biết thông tin cá nhân được sử dụng như thế nào và liệu có bị giao cho các tổ chức thứ ba, thứ tư hay không.

Thông thường, khi đăng ký, chúng ta vẫn thường gặp câu đại ý là tôi đồng ý với điều khoản sử dụng dịch vụ và chính sách riêng tư của trang web. Và rất nhiều người, kể cả tôi, cũng rất ít khi dành thời gian để đọc những điều mà mình sắp đồng ý.

Tuy nhiên, thói quen có phần lười biếng đó cần phải được loại bỏ. Hãy đọc kỹ các điều khoản và nếu cảm thấy không đồng ý có thể suy nghĩ bỏ dịch vụ, và tìm một sự thay thế khác.

Privacy settings

Bất cứ ứng dụng nào, kể cả web cũng đều cho phép người dùng tuỳ biến ứng dụng đó để phù hợp hơn với sở thích của bản thân. Trong những tuỳ chọn đó, thường sẽ có một vài thiết lập liên quan đến quyền riêng tư.

Hãy dành một chút thời gian để xem lại các thiết lập này mà tuỳ chỉnh nó theo ý thích của mình. Thực ra, cũng không nên hy vọng quá vào những thiết lập này, nhiều nhà cung cấp thiết lập kiểu như: không sử dụng dữ liệu thu thập được để tuỳ biến quảng cáo. Thực chất, thiết lập này chỉ có ý nghĩa không sử dụng dữ liệu thu thập được chứ không phải là không thu thập nữa.

Vì vậy trong trường hợp cuối cùng, nếu cảm thấy ứng dụng nào đó không đảm bảo quyền riêng tư cho bạn ở mức chấp nhận được, thì phương án tốt nhất vẫn là không dùng dịch vụ đó nữa và chuyển sang một dịch vụ khác. (Khi đi nhớ xoá hoàn toàn tài khoản.)

Hạn chế cài đặt app

App rất tiện dụng và nhiều chức năng, nhưng cài app đồng nghĩa với việc chúng ta có nguy cơ rất cao bị tracking. Một số ứng dụng như Facebook, Messenger, Chrome chính là những công cụ theo dõi người dùng rất mạnh.

Vì vậy, trong trường hợp có thể, hãy từ bỏ app và sử dụng phiên bản web của ứng dụng. Phần lớn các ứng dụng phổ biến đều có phiên bản web cả, mặc dù tính năng không bằng, giao diện xấu hơn nhưng đổi lại chúng ta có quyền riêng tư hơn.

Dùng phiên bản web rất nhẹ nhàng, đơn giản, hơn nữa lại không cần tốn bộ nhớ để cài đặt app (các app của Facebook đều tầm 500MB trở lên, chưa kể tiếp tục phình ra trong quá trình sử dụng). Ngoài ra, sử dụng web kết hợp với content blocker sẽ giúp chúng ta hạn chế rất nhiều tracking cũng như các quảng cáo khó chịu.

Trừ một vài ứng dụng bắt buộc như các ứng dụng OTT (không có phiên bản web) ra thì bản thân tôi thấy không cần thiết phải cài đặt app nào cả.

Hạn chế quyền truy cập

Để tải các trang web hay ứng dụng, nhiều khi chúng ta bị yêu cầu trang web truy cập thông tin GPS, camera, loa, mic, notification center, v.v… Nếu đồng ý, các thiết bị phần cứng này sẽ bị truy cập và có thể bị lợi dụng để theo dõi người dùng.

Để bảo vệ quyền riêng tư, thì hãy hạn chế việc truy cập này, chỉ cho ứng dụng truy cập những thứ thực sự cần thiết mà thôi. Một vài thông tin như vị trí, camera, mic thì tuyệt đối không nên cho truy cập.

Dùng nhiều email khác nhau

Bạn nên sử dụng nhiều email khác nhau cho những mục đích khác nhau. Khi đăng ký sử dụng một dịch vụ nào đó, hãy sử dụng email khác với các dịch vụ khác, tránh trường hợp các bị tracking qua nhiều dịch vụ khác nhau bằng email. (Đặc biệt với các trường hợp như Instagram và WhatsApp bị Facebook mua lại thì càng nên làm như vậy nếu không muốn dữ liệu ở hai ứng dụng này liên kết với Facebook.)

Nếu như có những dịch vụ bạn chỉ định đăng ký tài khoản “tạm thời” thì có thể sử dụng các dịch vụ Disposable email như YopMail. Với các dịch vụ nghiêm túc hơn, hãy đăng ký thêm một vài địa chỉ email miễn phí. Dù cách làm này hơi tốn thời gian và công sức, nhưng nó phòng tránh việc tracking cũng như các website mua bán thông tin cá nhân của bạn. (Chính xác hơn, dù có mua bán thông tin nhưng với những email đăng ký khác nhau, họ sẽ nghĩ đó là hai người khác nhau.)

Duyệt web riêng tư

Sử dụng chế độ duyệt web riêng tư sẽ giúp chúng ta có nhiều sự riêng tư hơn. Khi duyệt web ở chế độ riêng tư, trình duyệt sẽ không lưu bất cứ thông tin gì, kể cả lịch sử duyệt web, search, form, v.v…

Với chế độ duyệt web riêng tư, mỗi lần bạn vào một trang web sẽ luôn như là lần đầu tiên vậy, nên việc tracking sẽ khó khăn hơn. Thực chất việc này không ngăn chặn được tracking, nhưng sẽ giúp các tracker khó xác định được bạn là ai, và khó liên kết được bạn với những dữ liệu đã thu được trước đó.

Tuy nhiên, nếu tracker nào sử dụng fingerprint để định danh người dùng thì chế độ duyệt web riêng tư cũng không giúp được nhiều.

Sử dụng content blocker

Một công cụ có hiệu quả rất cao để ngăn chặn tracking các trình content blocker (nhiều khi được gọi là trình chặn quảng cáo). Content blocker thường là một extension cho trình duyệt, giúp trình có tính năng chặn truy vấn không mong muốn (nó chặn các truy vấn theo cấu hình của nó chứ không chỉ chặn quảng cáo, nên gọi là content blocker chính xác hơn).

Content blocker sẽ giúp chúng ta kiểm soát những gì được load khi truy cập một trang web, ngăn chặn các hành động tracking. Content blocker được thiết kế để block các nội dung không mong muốn, mà không có một thông tin nào được gửi cho chính nhà phát triển content block đó.

Firefox, Opera là những trường hợp cá biệt có tích hợp sẵn, với phần lớn các trình duyệt khác, chúng ta cần cài đặt extension mới được. Khi cài đặt thì chỉ cần chú ý một chút, tìm hiểu kỹ một chút là ổn. Nguyên nhân là vì có rất nhiều extension mạo danh trong chợ ứng dụng và chính những extension này lại đang tracking.

Sử dụng các ứng dụng riêng tư

Tor Browser

Trình duyệt Tor là một công cụ mà chúng ta nên sử dụng nếu muốn riêng tự trên Internet. Tor sử dụng một mạng phức tạp các máy tính kết nối với nhau để chúng ta truy cập Internet thông qua nó. Những kết nối trong mạng Tor đều được mã hoá nên rất bảo mật.

Tor là một công cụ rất tốt nếu chúng ta thực sự muốn ẩn danh trên Internet, và do đó sẽ giúp bảo vệ quyền riêng tư. Lưu ý rằng, không có công cụ nào là hoàn hảo cả, và Tor giúp chúng ta chứ không hoàn toàn loại bỏ các nguy cơ. Một vấn đề nhỏ của Tor là tốc độ của nó khá chậm do kết nối phải lòng vòng qua nhiều node mạng khác nhau.

VPN

Nếu muốn duy trì sự ẩn danh, tính riêng tư trên Internet thì VPN cũng là một lựa chọn. Sự bảo vệ của VPN không phải là hoàn toàn, nhưng nó sẽ giúp chúng ta che giấu được nhiều hoạt động online. Địa chỉ IP thực của chúng ta sẽ được che giấu, lưu lượng Internet của chúng ta sẽ là không xác định với các ISP.

Lưu ý rằng, nếu sử dụng VPN hãy sử dụng các dịch vụ có trả phí. Các dịch vụ VPN miễn phí, dù có quảng cáo tốt đến thế nào cũng nên hạn chế sử dụng. Vì các dịch vụ này không hoàn toàn là miễn phí, mà chính chúng cũng đang thu thập thông tin của người dùng và bán chúng (đúng là chả có cái gì là miễn phí).

Dùng những dịch vụ kiểu này chả khác nào giấu thông tin với người này nhưng lại nói với người kia, cuối cùng hai người ấy nói chuyện với nhau là bằng hoà.

DuckDuckGo

Không còn nghi ngờ gì nữa, Google chính là kẻ theo dõi và kiếm tiền rất khủng từ thông tin của người dùng. Sử dụng DuckDuckGo như một lựa chọn thay thế là điều cần thiết. Dù khả năng search không bằng được Google, nhưng bù lại chúng ta có sự riêng tư.

Nhiều trình duyệt hiện đại đều cho phép search trực tiếp từ thanh địa chỉ, vì vậy chúng ta cũng nên thay đổi thiết lập search engine mặc định của trình duyệt. Phần lớn các trình duyệt (ngoại trừ Chrome) đều cho người dùng dễ dàng chuyển sang dùng DuckDuckGo làm search engine mặc định, kể cả các phiên bản di động.

Ngay cả với Chrome, người dùng vẫn có thể sử dụng DuckDuckGo được, nhưng cần một số thao tác phức tạp hơn đôi chút.

DNS

Các ISP đều có DNS riêng, nhưng chúng thường chậm và có thể dùng để tracking. Thỉnh thoảng, nó còn dùng trong kiểm duyệt khi không phân giải một số tên miền nhất định. Do đó, chúng ta nên sử dụng các dịch vụ DNS bên ngoài. Chắc hẳn trong chúng ta đã quen với Google DNS hay Open DNS, đây là những dịch vụ khá nổi tiếng.

Tuy nhiên, DNS cũng tiềm ẩn nguy cơ tracking, khi mà nó được cung cấp bởi Google, công ty thu thập dữ liệu khủng nhất thế giới.

Rất may là gần đây, CloudFlare đã cho ra mắt một máy chủ DNS mới với cam kết bảo mật và riêng tư cho người dùng. Dù chưa biết thực hư thế nào, nhưng đây cũng là một việc nên thử, ít nhất thì chúng ta cũng phân tán bớt thông tin online cho nhiều nơi khác nhau.

Ngoài ra một dịch vụ DNS khác từ AdGuard với khả năng chặn quảng cáo, tracking cũng rất đáng để thử. Việc chặn quảng cáo ở mức độ DNS này thiết lập dễ dàng hơn cách sử dụng content blocker, chỉ cần thiết lập cho mạng là mọi người đều dùng được. Tuy nhiên, nhược điểm là chúng ta không thể tuỳ biến cấu hình chặn tracking được. (AdGuard DNS cấu hình thế nào dùng thế ấy, khá hiệu quả với các trang nước ngoài nhưng chưa có chặn tracking cũng như quảng cáo của Việt Nam.)

Thiết lập trình duyệt

Tracking protection

Đây là chức năng chỉ có trên trình duyệt Firefox. Trình duyệt Opera có một chức năng là Block Ads, cũng có thể được sử dụng để block các truy vấn tracking.

Cơ chế hoạt động của chức năng này trên Firefox la sử dụng một cầu hình của Disconnect, để tìm ra các truy vấn dùng trong tracking và block chúng lại. Không có truy vấn thì không có thông tin nào bị thu thập.

Do Not Track

“Do not track” là một HTTP header trình duyệt gửi lên cho máy chủ web. Tất cả các trình duyệt đều cho phép chúng ta dễ dàng thiết lập điều này. Lưu ý rằng, thiết lập này chỉ gửi header lên còn máy chủ web hoàn toàn chủ động trong việc có thực thi header này hay không.

Không có một yêu cầu nào rằng, bắt buộc website khi nhận được header này phải ngừng việc tracking. Tuy nhiên, chúng ta vẫn nên bật nó lên, vì xét cho cùng là làm việc này cũng chẳng mất gì.

Tắt JavaScript

JavaScript rất cool và mạnh mẽ trong việc cung cấp giao diện các ứng dụng web. Thế nhưng chính JavaScript cũng là công cụ tracking mạnh nhất, thu thập nhiều thông tin nhất. Ngoài ra, nhiều lỗ hổng bảo mật trong JavaScript có thể bị lợi dụng để tin tặc xâm nhập máy tính của bạn và đánh cắp nhiều thông tin giá trị.

Nếu muốn bảo vệ mình, tắt JavaScript của trình duyệt là một việc nên làm. (Đổi lại, các ứng dụng web hoạt động không có HTML sẽ rất nhàm chán, kiểu trang web của những năm 90 của thế kỷ trước, thậm chí nhiều trang hoàn toàn không hoạt động nếu không có JavaScript.) Nếu sử dụng một số plugin như NoScript, chúng ta có thể thiết lập chạy hay không chạy cho từng script, với từng website.

Third-party cookie là cookie thường dùng trong tracking. Block chúng đi cũng không ảnh hưởng đến hoạt động của trang web mà bạn đang truy cập (ví dụ các thông tin đăng nhập hoàn toàn không bị ảnh hưởng).

Block third-party cookie sẽ giúp tăng tính riêng tư cho người sử dụng, tăng cường bảo mật và gây một chút rắc rối cho các tracker.

Tôi xin lỗi nếu bài viết có bất kỳ typo nào. Nếu bạn nhận thấy điều gì bất thường, xin hãy cho tôi biết.

Nếu có bất điều gì muốn nói, bạn có thể liên hệ với tôi qua các mạng xã hội, tạo discussion hoặc report issue trên Github.