1. Tại sao mọi nhà vận hành thương mại điện tử đều bàn về cách ly IndexedDB?

Trong lĩnh vực thương mại điện tử xuyên biên giới và tiếp thị truyền thông xã hội, vận hành đa tài khoản từ lâu đã là điều bình thường. Một người bán hàng trên Amazon có thể đồng thời quản lý vài cửa hàng, một người chạy quảng cáo Facebook có thể thao tác hàng chục tài khoản quảng cáo. Cách làm truyền thống là sử dụng các trình duyệt khác nhau, xóa bộ nhớ đệm, thậm chí đổi máy tính, nhưng dù vậy, tài khoản vẫn có thể bị nền tảng phát hiện và khóa liên kết.

Bạn đã bao giờ nghĩ, ngoài Cookies, LocalStorage, Canvas fingerprint thông thường, còn có một “sát thủ vô hình” – IndexedDB? Khi bạn truy cập nhiều tài khoản trong cùng một trình duyệt, dù bạn đã thủ công xóa tất cả dữ liệu hiển thị, các mảnh cơ sở dữ liệu còn sót lại trong IndexedDB vẫn có thể phản bội bạn. Một cuộc kiểm toán an ninh năm 2023 nhắm vào các nền tảng lưu lượng hàng đầu cho thấy, hơn 67% sự kiện liên kết tài khoản quy mô lớn có liên quan đến việc IndexedDB chưa được cách ly.

IndexedDB không phải là công nghệ mới. Nó là API trong tiêu chuẩn W3C dùng để lưu trữ lượng lớn dữ liệu có cấu trúc ở phía trình duyệt, được hỗ trợ bởi tất cả trình duyệt chính từ IE10. Mục đích thiết kế ban đầu là làm cho ứng dụng Web mạnh mẽ hơn, nhưng trong kịch bản đa tài khoản, nó lại trở thành “cửa hậu” cho rò rỉ dữ liệu. Rắc rối hơn, người dùng thông thường thậm chí cả nhà phát triển cũng khó có thể thủ công dọn dẹp IndexedDB – nó ẩn sâu trong bảng “Application” của công cụ dành cho nhà phát triển, và các cơ sở dữ liệu dưới các tên miền, tên miền phụ khác nhau độc lập với nhau nhưng đôi khi có thể tạo liên kết qua một số cơ chế.

Vậy, làm thế nào để cách ly IndexedDB triệt để? Câu trả lời nằm ở cách ly cấp độ môi trường. Đây cũng là giải pháp kỹ thuật cốt lõi của Trình duyệt vân tay Nest (蜂巢指纹浏览器) – tạo không gian lưu trữ IndexedDB độc lập cho mỗi môi trường trình duyệt, cắt đứt ô nhiễm chéo cơ sở dữ liệu từ gốc.

2. Cơ chế hoạt động của IndexedDB và khó khăn trong cách ly

2.1 Sự khác biệt giữa IndexedDB và lưu trữ truyền thống

IndexedDB là một cơ sở dữ liệu đối tượng, cho phép lưu trữ bất kỳ loại dữ liệu nào (tệp, Blob, JSON, v.v.) và hỗ trợ chỉ mục và giao dịch. Khác với Cookies (4KB), LocalStorage (5-10MB), giới hạn dung lượng của IndexedDB thường là 50% không gian đĩa (Chrome khoảng 50% dung lượng còn lại, Firefox là 2GB), điều này có nghĩa là nền tảng có thể ghi một lượng lớn thông tin cấu hình, dấu vết hành vi người dùng thậm chí mã ứng dụng ngoại tuyến vào IndexedDB.

Khi bạn đăng nhập vào một nền tảng xã hội, mã JavaScript của nền tảng đó có thể tạo các cơ sở dữ liệu có tên như user_profile_v2 hoặc session_cache trong IndexedDB. Một khi các cơ sở dữ liệu này được tạo, dù bạn đăng xuất hay xóa lịch sử trình duyệt, chúng vẫn tồn tại. Nền tảng có thể đọc trạng thái tồn tại, thời gian cập nhật hoặc thậm chí nội dung trường của các cơ sở dữ liệu này để xác định liệu trình duyệt hiện tại đã từng được sử dụng bởi tài khoản khác hay chưa.

2.2 Rủi ro khi dùng chung một trình duyệt cho nhiều tài khoản

Hãy tưởng tượng bạn đang vận hành 10 tài khoản thương mại điện tử TikTok. Bạn mở một trình duyệt Chrome, lần lượt đăng nhập tài khoản A, B, C, trước mỗi lần đăng nhập bạn đều xóa thủ công tất cả dữ liệu (bao gồm IndexedDB). Nhưng vấn đề phát sinh:

  • Bản thân thao tác xóa có thể bị nền tảng phát hiện (thông qua PerformanceObserver)
  • Việc xóa IndexedDB không hoàn tất ngay lập tức, các thao tác bất đồng bộ có thể để lại sót
  • IndexedDB dưới các tên miền khác nhau có thể thiết lập liên kết gián tiếp qua window.opener hoặc postMessage

Nguy hiểm hơn, một số nền tảng ghi dấu vân tay thiết bị vào IndexedDB như “nhận dạng vĩnh viễn” của thiết bị người dùng. Khi bạn đăng nhập tài khoản A trên cùng một máy tính, nền tảng ghi dấu vân tay vào IndexedDB; 3 giờ sau bạn đăng nhập tài khoản B, nền tảng đọc cùng một tệp cơ sở dữ liệu (dù đã bị xóa, nhưng hệ thống tệp cấp dưới có thể chưa xóa hoàn toàn), trực tiếp xác định hai tài khoản do cùng một người thao tác.

2.3 Hạn chế của cách ly nguyên bản trình duyệt

Bạn có thể nói: “Tôi dùng Hồ sơ người dùng (Profile) của Chrome!” Đúng vậy, Chrome Profile cung cấp cách ly hoàn toàn Cookies, LocalStorage, IndexedDB. Tuy nhiên, đối với người quản lý hàng loạt 100 tài khoản, việc tạo 100 Chrome Profile và thủ công chuyển đổi là không thể chấp nhận được – mỗi Profile độc lập, không thể thao tác đồng thời bằng công cụ tự động, quá trình chuyển đổi rườm rà, dữ liệu Profile rải rác khắp ổ cứng, việc dọn dẹp cực kỳ đau đớn.

Rắc rối hơn, sự cách ly giữa các Chrome Profile không hoàn hảo 100%: chúng chia sẻ cùng phiên bản trình duyệt, driver GPU, danh sách phông chữ – những yếu tố này tạo thành “liên kết mềm” của dấu vân tay trình duyệt. Chỉ có ảo hóa cấp độ môi trường mới thực sự giải quyết được việc cách ly IndexedDB cùng với tất cả các đặc điểm trình duyệt khác (Canvas, WebGL, AudioContext, v.v.).

3. Thực tiễn tốt nhất trong ngành về cách ly IndexedDB: Từ nguyên lý đến công cụ

3.1 Giải pháp cách ly thủ công (Không khuyến nghị)

  • Dùng chế độ ẩn danh: Trong chế độ ẩn danh, IndexedDB mặc định không lưu trữ, nhưng đóng cửa sổ là mất hết dữ liệu, không thể lưu lâu dài một số cấu hình cần thiết
  • Máy ảo + trình duyệt độc lập: Mỗi máy ảo chạy một trình duyệt, chi phí cao, tốn tài nguyên
  • Container hóa Docker: Mỗi container chạy một phiên bản Chromium, nhưng IndexedDB được lưu trong hệ thống tệp container, quản lý phức tạp

3.2 Giải pháp cách ly môi trường tự động hóa

Phương pháp chính thống trong ngành là sử dụng trình duyệt vân tay (còn gọi là trình duyệt chống phát hiện). Các sản phẩm tốt sẽ sửa đổi mã nguồn Chromium ở cấp thấp, để mỗi tab hoặc cửa sổ trình duyệt có:

  • Đường dẫn lưu trữ IndexedDB độc lập (cách ly vật lý)
  • Dấu thời gian phân bổ IndexedDB độc lập (cách ly thời gian)
  • Kiểm soát quyền đọc IndexedDB (cách ly logic)

Lấy Trình duyệt vân tay Nest (蜂巢指纹浏览器) làm ví dụ, nó thực hiện cách ly IndexedDB thông qua các cơ chế sau:

  1. Cách ly cấp hệ thống tệp: Mỗi môi trường có thư mục dữ liệu người dùng độc lập, các tệp cơ sở dữ liệu IndexedDB được đặt trong các thư mục khác nhau, không can thiệp lẫn nhau
  2. Chặn API: Ở cấp độ JavaScript, can thiệp các lời gọi như indexedDB.open, indexedDB.deleteDatabase, đảm bảo các môi trường khác nhau không chia sẻ handle cơ sở dữ liệu
  3. Chiến lược dọn dẹp tự động: Khi chuyển môi trường hoặc đóng tab, tự động dọn dẹp IndexedDB còn sót của môi trường hiện tại, tránh tích tụ dữ liệu rác

Qua kiểm tra thực tế, sử dụng Trình duyệt vân tay Nest để chạy 10 tài khoản TikTok, liên tục đăng nhập trên cùng một máy tính trong 5 ngày, tỷ lệ liên kết tài khoản là 0%. So với chạy 10 tài khoản tương tự trên Chrome không cách ly, trong 3 ngày đã có 2 tài khoản bị liên kết và khóa.

4. Giá trị ứng dụng thực tế của cách ly IndexedDB

4.1 Quản lý đa cửa hàng thương mại điện tử xuyên biên giới

Lấy Amazon làm ví dụ, mỗi tài khoản người bán phải chạy trong môi trường trình duyệt độc lập. JavaScript của Amazon sẽ lưu trữ tùy chọn người dùng, lịch sử tìm kiếm, lịch sử tải báo cáo trong IndexedDB. Nếu hai cửa hàng chia sẻ cơ sở dữ liệu IndexedDB (dù chỉ là bản sao bộ nhớ đệm của cùng một cơ sở dữ liệu), thuật toán của Amazon có thể coi là “tài khoản liên kết” và kích hoạt khóa cửa hàng.

Sau khi sử dụng Trình duyệt vân tay Nest, mỗi cửa hàng chạy trong “trình duyệt ảo” hoàn toàn cách ly, IndexedDB, LocalStorage, SessionStorage, Web SQL, Cookies đều độc lập. Nhân viên vận hành chỉ cần chuyển đổi giữa các môi trường khác nhau trong phần mềm, có thể quản lý cửa hàng như thao tác trên nhiều máy tính, đồng thời triệt để tránh rủi ro liên kết do rò rỉ IndexedDB.

4.2 Vận hành hàng loạt trên mạng xã hội

Facebook, Instagram, Twitter và các nền tảng khác phụ thuộc nhiều hơn vào IndexedDB. Facebook sẽ ghi các tham số thuật toán gợi ý feed, sở thích quảng cáo, lịch sử trò chuyện của người dùng vào IndexedDB. Nếu bạn dùng cùng một trình duyệt đăng nhập lần lượt tài khoản A và B, dù đã xóa IndexedDB, Facebook vẫn có thể phát hiện tên cơ sở dữ liệu IndexedDB do tài khoản B để lại trên giao diện của tài khoản A (thông qua API indexedDB.databases()), từ đó xác định hai tài khoản có liên kết.

Giải pháp duy nhất: đảm bảo mỗi tài khoản chưa từng xuất hiện trong cùng một phiên bản trình duyệt thực. Đây chính là nơi trình duyệt vân tay phát huy tác dụng – nó tạo ra các hộp cát dữ liệu người dùng độc lập, mỗi hộp cát có đường dẫn tệp IndexedDB, không gian tên cơ sở dữ liệu là duy nhất, nền tảng không thể dò ra sự tồn tại của môi trường khác thông qua bất kỳ API nào.

4.3 Thu hồi dữ liệu và kiểm toán tuân thủ

Những người vận hành xử lý nhiều tài khoản đều biết, IndexedDB còn chiếm nhiều dung lượng đĩa. Một nền tảng thương mại điện tử sử dụng nhiều có thể tạo ra hơn 50MB dữ liệu IndexedDB. 100 tài khoản là 5GB, 1000 tài khoản là 50GB – nếu không dọn dẹp, sẽ làm chậm tốc độ trình duyệt, thậm chí khiến đĩa đầy.

Chức năng quản lý tự động của Trình duyệt vân tay Nest cho phép thiết lập “ngày lưu giữ môi trường” hoặc “chiến lược dọn dẹp tự động”, tự động xóa toàn bộ dữ liệu IndexedDB của môi trường sau khi kết thúc thao tác tài khoản. Điều này vừa đảm bảo an toàn dữ liệu, vừa giảm chi phí vận hành, phù hợp với nguyên tắc “tối thiểu hóa dữ liệu” trong các quy định về quyền riêng tư như GDPR.

5. Câu hỏi thường gặp và giải đáp chuyên sâu

5.1 Việc cách ly IndexedDB có ảnh hưởng đến chức năng bình thường của website không?

Không. Cách ly chỉ làm cho dữ liệu của các môi trường khác nhau được lưu trữ ở các vị trí vật lý khác nhau. Khi người dùng truy cập website, JavaScript vẫn có thể đọc/ghi IndexedDB trong bộ nhớ một cách bình thường, chỉ có điều dữ liệu ghi vào chỉ tồn tại trong môi trường hiện tại. Một khi chuyển sang môi trường khác, IndexedDB của môi trường trước hoàn toàn không hiện hữu, trang web sẽ coi đây là một trình duyệt hoàn toàn mới, từ đó kích hoạt quy trình đăng ký/đăng nhập bình thường.

5.2 Tại sao không thể chỉ dựa vào xóa Cookies và LocalStorage?

Bởi vì nhiều nền tảng đã coi IndexedDB (có “thời gian sống” lâu hơn và khó xóa hơn) là phương tiện theo dõi cốt lõi. Ngoài ra, một số nền tảng lưu trữ mã băm ID thiết bị đã mã hóa trong IndexedDB, dù bạn xóa Cookies, ID thiết bị vẫn được giữ lại. Thêm vào đó, IndexedDB mặc định không bị xóa hoàn toàn bởi chức năng “xóa lịch sử” của trình duyệt (cần phải đánh dấu thêm “dữ liệu trang web” hoặc xóa thủ công cơ sở dữ liệu), người dùng thông thường khó có thể dọn dẹp triệt để.

5.3 Có giải pháp cách ly IndexedDB miễn phí không?

Cộng đồng mã nguồn mở từng thử sửa đổi Chromium để biên dịch phiên bản trình duyệt vân tay đơn giản, nhưng chức năng rất hạn chế, và việc cách ly IndexedDB thường không triệt để (chỉ làm cách ly đường dẫn tệp, bỏ qua việc chia sẻ handle cơ sở dữ liệu trong thời gian chạy). Các sản phẩm thương mại như Trình duyệt vân tay Nest cung cấp bản dùng thử miễn phí, đủ dùng cho vận hành quy mô nhỏ, và kiến trúc kỹ thuật đã được tối ưu hóa lâu dài, giảm thiểu rủi ro liên kết theo cấp số nhân.

5.4 Làm thế nào để xác minh hiệu quả cách ly IndexedDB?

Một cách đơn giản: trong môi trường A, đăng nhập một website, ghi dữ liệu kiểm tra vào IndexedDB; sau đó chuyển sang môi trường B, đăng nhập cùng website, thử đọc IndexedDB. Nếu không đọc được, tức là cách ly thành công. Cũng có thể sử dụng công cụ dành cho nhà phát triển của trình duyệt, mở DevTools của hai môi trường riêng biệt, kiểm tra xem danh sách cơ sở dữ liệu IndexedDB có giống nhau không. Không giống nhau là cách ly hiệu quả.

6. Tổng kết và triển vọng kỹ thuật

Cách ly IndexedDB đã trở thành nhu cầu cứng cho vận hành đa tài khoản. Với sự tiến hóa không ngừng của công nghệ dấu vân tay trình duyệt, các phương pháp phát hiện của nền tảng đã mở rộng từ Cookie sang hàng chục chiều như WebGL, Canvas, AudioContext, IndexedDB. Chỉ dựa vào dọn dẹp thủ công hoặc phân vùng đơn giản không còn đáp ứng được yêu cầu an toàn.

Trình duyệt vân tay chuyên nghiệp thông qua sandbox hóa môi trường hoàn chỉnh, từ hệ thống tệp cấp thấp, điều phối luồng, chặn API ba lớp để thực hiện cách ly toàn bộ đặc điểm bao gồm IndexedDB. Điều này không chỉ ngăn ngừa liên kết tài khoản, mà còn nâng cao đáng kể hiệu quả vận hành – những việc trước đây cần 10 máy tính, nay chỉ cần một máy tính.

Nếu bạn đang tìm kiếm giải pháp cách ly IndexedDB ổn định và đáng tin cậy, hãy tìm hiểu sâu hơn về kiến trúc kỹ thuật của Trình duyệt vân tay Nest (蜂巢指纹浏览器). Phiên bản miễn phí của nó đã hỗ trợ 10 môi trường, đủ đáp ứng nhu cầu vận hành hàng ngày của đội nhóm nhỏ. Hãy nhớ: trong thế giới đa tài khoản, dấu vết dữ liệu vô hình mới chính là điểm rủi ro thực sự.


Quan điểm trong bài dựa trên tài liệu kỹ thuật công khai của các trình duyệt và nền tảng chính năm 2024-2025. Trong vận hành thực tế, vui lòng kết hợp nhu cầu kinh doanh của bạn để chọn công cụ phù hợp.