Phương pháp của Tray's đối với các thay đổi về cookie của bên thứ ba

Tray là một nhà cung cấp Hệ thống quản lý nội dung (CMS) thương mại điện tử với hơn 20 năm kinh nghiệm phục vụ thị trường bán lẻ Brazil. Người bán chạy cửa hàng trực tuyến trên cơ sở hạ tầng Tray's. Cơ sở hạ tầng này cũng cung cấp các dịch vụ và tính năng tích hợp để quản lý hoạt động hậu cần, thanh toán, chương trình khuyến mãi và báo cáo của doanh nghiệp.

Tray là thành viên của nhóm LWSA và là một lực lượng thúc đẩy trong ngành thương mại điện tử. Tray được hơn 180.000 khách hàng tin tưởng. Tổng cộng, các khách hàng này đã tạo ra hơn 3 tỷ đô la Mỹ tổng giá trị hàng hoá trong quý đầu tiên của năm 2024.

Trang chủ của trang web tray.com.br

Phụ thuộc vào cookie của bên thứ ba

Cấu trúc kỹ thuật Tray's sử dụng cookie của bên thứ ba (3PC) để cung cấp chức năng của bên thứ ba cho trang web của người bán, đặc biệt là cho bảng điều khiển quản trị Backoffice của người bán dùng để quản lý cửa hàng. Những cookie này là cần thiết để hiển thị nội dung được phân phát từ các ứng dụng của bên thứ ba được lưu trữ trên các miền khác với miền của người bán. Nghiên cứu Tray's cho thấy rằng các thay đổi theo kế hoạch đối với cách trình duyệt xử lý 3PC có thể làm gián đoạn chức năng này. Vì Tray đóng vai trò là cơ sở hạ tầng quan trọng đối với nhiều nhà bán lẻ trực tuyến, nên hoạt động kinh doanh phải tiếp tục như bình thường, ngay cả khi có những thay đổi lớn đối với cách Chrome và các trình duyệt khác xử lý 3PC.

Nghiên cứu điển hình này trình bày quá trình Tray's phát hiện các sự cố tiềm ẩn, đánh giá các giải pháp tiềm năng và giải pháp thành công được triển khai để đảm bảo trang web của họ sẵn sàng cho những thay đổi đối với 3PC.

Kiến trúc kỹ thuật

Microservices

Tray lưu trữ tất cả các ứng dụng trang chủ cửa hàng và ứng dụng phụ trợ trên miền của mình, tray.com.br, và người bán có thể sử dụng CNAME để phân phát các ứng dụng này từ miền tuỳ chỉnh của riêng họ. Với chế độ thiết lập này, người mua sắm sẽ chỉ thấy miền của cửa hàng, chẳng hạn như merchant.example. Tray tận dụng cấu trúc dịch vụ vi mô để cung cấp các tính năng và chức năng. Phương pháp này sử dụng các ứng dụng độc lập, khép kín, mỗi ứng dụng tập trung vào một chức năng cụ thể. Sau đó, các dịch vụ vi mô này được nhóm thành các phạm vi dựa trên chức năng của chúng:

  • Cửa hàng: Bao gồm các ứng dụng chịu trách nhiệm về các tính năng của trang chủ cửa hàng, chẳng hạn như hiển thị sản phẩm, tìm kiếm và quản lý giao diện.
  • Quy trình mua: Quản lý giỏ hàng, quy trình thanh toán và các lượt tương tác của khách hàng trong hành trình mua hàng.
  • Quản lý cửa hàng: Cung cấp các ứng dụng phụ trợ cho các nhiệm vụ như quản trị, báo cáo và nhập dữ liệu.
  • Tích hợp: Hỗ trợ kết nối với các nền tảng bên ngoài để cho phép đăng thông tin trên nhiều trang web thương mại, quản lý dịch vụ hậu cần và nhiều tính năng khác.

Ứng dụng cho phần phụ trợ

Phần phụ trợ là một ứng dụng cốt lõi trong Store Management, đóng vai trò là bảng điều khiển quản trị trung tâm cho cửa hàng ảo của người bán trên Tray. Thông qua bảng điều khiển này, người bán có thể:

  • Đăng ký sản phẩm
  • Định cấu hình phương thức thanh toán và vận chuyển
  • Tạo quảng cáo
  • Quản lý sự kiện phát trực tiếp
  • Giám sát luồng đơn đặt hàng
  • Theo dõi báo cáo bán hàng

Vì Backoffice tập hợp nhiều dịch vụ vi mô (một số do Tray vận hành và một số do bên thứ ba vận hành) trong một giao diện duy nhất, nên Backoffice đặc biệt dễ bị gián đoạn do những thay đổi trong cách xử lý cookie của bên thứ ba.

CNAME để tuỳ chỉnh cho người bán

Tray sử dụng bản ghi CNAME để tích hợp cửa hàng một cách liền mạch.

Khi thiết lập một cửa hàng mới, người bán có thể thiết lập CNAME để chuyển hướng các yêu cầu đến các ứng dụng được lưu trữ trên miền Tray's, tray.com.br. Điều này có nghĩa là khi khách hàng truy cập vào trang web của người bán (chẳng hạn như example.com), bản ghi CNAME sẽ chuyển hướng họ đến miền Tray's trong khi vẫn duy trì URL của người bán trong thanh địa chỉ. Điều này tạo ra trải nghiệm người dùng mượt mà, trong đó nội dung dường như được phân phát trực tiếp từ trang web của người bán.

Tìm hiểu về CNAME

Bản ghi CNAME hoạt động tương tự như tính năng chuyển tiếp cuộc gọi trên điện thoại. Hãy tưởng tượng bạn gọi điện cho một người bạn theo số 555-0199, nhưng họ không trả lời. Cuộc gọi có thể được chuyển tiếp đến hộp thư thoại ở một số khác, chẳng hạn như 555-0100. Tuy nhiên, bạn (người gọi) vẫn hoàn toàn không biết về việc chuyển hướng này. Điện thoại sẽ kết nối liền mạch với bạn và lời chào hộp thư thoại vẫn hiển thị số ban đầu của bạn bè (555-0199).

CNAME cũng hoạt động theo cách tương tự đối với trang web. Khi người dùng truy cập vào trang web của người bán (chẳng hạn như example.com), bản ghi CNAME có thể chuyển hướng yêu cầu của họ ở chế độ nền sang một máy chủ khác, chẳng hạn như assets.example.com. Nhưng từ góc độ của người dùng và trình duyệt, mọi thứ đều diễn ra trên example.com. Thanh địa chỉ hiển thị URL của người bán và người dùng tương tác với trang web như thể nội dung bắt nguồn trực tiếp từ miền đó.

Đánh giá các sự cố tiềm ẩn

Phân tích Tray's về các thay đổi theo kế hoạch đối với việc xử lý 3PC cho thấy sự gián đoạn trong ứng dụng Backoffice. Khi 3PC bị chặn, các vấn đề đã phát sinh khi tải trang từ các miền khác nhau trong iframe được nhúng vào các trang phụ trợ. Điều này áp dụng cho các miền nội bộ thuộc các dịch vụ của chính công ty, cũng như cho các đối tác bên ngoài phát triển các ứng dụng tích hợp với Tray bằng API của ứng dụng đó.

Ví dụ: hãy tưởng tượng một trang trên backoffice.merchant.example nhúng nội dung do tray.com.br và các bên thứ ba khác lưu trữ. Trình duyệt sẽ coi nội dung được nhúng này là của bên thứ ba do sự khác biệt về miền, có thể hạn chế nội dung đó theo mọi giới hạn của bên thứ ba.

Cấu hình này có thể dẫn đến một số vấn đề:

  • Phiên bị lỗi: Các 3PC bị chặn có thể khiến các phiên bị ảnh hưởng bị lỗi, phân mảnh trải nghiệm người dùng bằng cách yêu cầu người dùng đăng nhập nhiều lần hoặc làm gián đoạn hoặc gây ra sự không nhất quán trong các trang Backoffice do iframe hoạt động không đúng cách.
  • Thách thức tích hợp: Các ứng dụng đối tác và dịch vụ nội bộ tích hợp với phần phụ trợ Tray's bằng API của ứng dụng có thể gặp phải những khó khăn tương tự do các hạn chế về 3PC.

Hình sau đây minh hoạ trường hợp này:

  • Người dùng truy cập vào ứng dụng Backoffice được lưu trữ trên merchant.example.
  • Các ứng dụng được nhúng nằm trên nhiều miền – một số trên tray.com.br do Tray sở hữu và một số khác trên miền của nhà cung cấp bên thứ ba (third-party.example).
  • Sự khác biệt về miền này kích hoạt các quy định hạn chế của 3PC, có thể gây ra vấn đề với các ứng dụng được nhúng.
Sơ đồ minh hoạ ví dụ về CNAME: các tiện ích từ backoffice.merchant.example kế thừa CNAME nên tất cả đều là SameSite với trang web của người bán

Kiểm thử hành trình trọng yếu của người dùng

Mục đích của việc kiểm thử và phân tích Tray's là cải thiện hiệu suất trang web và trải nghiệm người dùng, tập trung vào việc tích hợp bên thứ ba và chuẩn bị cho một tương lai mà nhiều người dùng duyệt web mà không cần 3PC.

Tray đã sử dụng Công cụ phân tích Hộp cát về quyền riêng tư (PSAT) và Công cụ của Chrome cho nhà phát triển để phân tích các luồng người dùng chính cho khách hàng và người bán. Việc này liên quan đến việc kiểm thử quá trình tải trang trong iframe, kiểm tra xem phiên hoạt động của người dùng có còn hợp lệ hay không và đảm bảo các ứng dụng của bên thứ ba tiếp tục hoạt động như mong đợi. Quá trình kiểm thử bao gồm nhiều vai trò người dùng, thiết bị và trình duyệt (bao gồm cả Chrome, Firefox và Safari) để xác định các vấn đề tiềm ẩn về khả năng tương thích trên nhiều trình duyệt. Tray đã sử dụng PSAT và Công cụ dành cho nhà phát triển Chrome để phân loại cookie và đánh giá tác động của cookie đối với trải nghiệm người dùng.

Phân tích này là một bước quan trọng để đảm bảo trải nghiệm người dùng suôn sẻ và nhất quán, thích ứng với tương lai mà cookie của bên thứ ba có thể bị hạn chế hoặc không dùng được.

Phân tích các giải pháp Hộp cát về quyền riêng tư

Storage Access API

Mặc dù Storage Access API (SAA) có thể giải quyết sự cố gián đoạn Tray's và được tất cả trình duyệt lớn hỗ trợ, nhưng đây không phải là giải pháp phù hợp nhất cho doanh nghiệp vì hai lý do chính:

  1. Nội dung được nhúng chỉ cần truy cập vào cookie trên nguồn gốc nơi nội dung đó được nhúng, chứ không cần truy cập vào cùng một cookie trên nhiều trang web.
  2. Lời nhắc của trình duyệt liên kết với SAA không lý tưởng, đặc biệt là vì cookie không được dùng để theo dõi người dùng trên các trang web.

Cookie có trạng thái được phân vùng độc lập (CHIPS)

CHIPS đã cung cấp một giải pháp mạnh mẽ với trải nghiệm người dùng tuyệt vời cho các tính năng nhúng trên nhiều trang web. Thuộc tính Partitioned rất dễ triển khai và không có tác động rõ ràng đến hoạt động tương tác của người dùng trong Chrome. Các trình duyệt chính khác không hỗ trợ CHIPS khi Tray đang thực hiện các thay đổi đối với dịch vụ của họ. Vì vậy, họ đã chọn di chuyển các phần nhúng do họ sở hữu và vận hành vào cùng một trang web với ứng dụng cấp cao nhất để mang lại trải nghiệm nhất quán trên các trình duyệt. Nội dung nhúng của bên thứ ba dựa vào CHIPS trong Chrome và mở một cửa sổ mới (ngữ cảnh của bên thứ nhất) trong các trình duyệt khác. Tuy nhiên, kể từ lần triển khai Tray's đầu tiên, Firefox đã xác nhận kế hoạch sớm ra mắt CHIPS và Safari đã bắt đầu hỗ trợ thêm cho thuộc tính Phân vùng, bắt đầu bằng Bản xem trước công nghệ.

Chúng tôi cho rằng CHIPS là một giải pháp tinh tế và rất vui khi thấy giải pháp này được áp dụng trên nhiều trình duyệt. Chúng tôi quyết định giữ lại giải pháp CHIPS ngoài việc chuyển mọi thứ sang các trang web của bên thứ nhất để có thể hỗ trợ tất cả trình duyệt ngay cả trước khi các trình duyệt đó áp dụng CHIPS.

— Takashi Tanaka, CTO của Tray

Khả năng tương thích với trình duyệt, W3C và các tiêu chuẩn

Chrome đóng vai trò quan trọng trong cộng đồng tiêu chuẩn. Việc tích cực tham gia vào các Nhóm làm việcNhóm cộng đồng của W3C, chẳng hạn như PrivacyCG, là yếu tố quan trọng để tác động đến hệ sinh thái trình duyệt rộng lớn hơn nhằm áp dụng các công nghệ web mới.

Hộp cát về quyền riêng tư hoạt động với hệ sinh thái web để liên tục phát triển các API như CHIPS dựa trên ý kiến phản hồi và mức độ tương tác của ngành. Phương pháp minh bạch và dựa trên tiêu chuẩn này đã góp phần thúc đẩy việc sử dụng CHIPS trên các trình duyệt lớn khác.

Tray hỗ trợ người bán và khách hàng của họ trên mọi loại thiết bị và trình duyệt. Chúng tôi ưu tiên phương pháp chỉ dựa trên CHIPS, nhưng cũng đã thực hiện thêm một số thay đổi để hỗ trợ các trình duyệt khác không hỗ trợ CHIPS tại thời điểm đó.

Phương pháp Tray's để giải quyết sự gián đoạn xảy ra khi không có 3PC liên quan đến hai chiến lược chính.

1. Ứng dụng nội bộ

Các dịch vụ vi mô Tray hoạt động đầy đủ (bao gồm cả Cửa hàng trực tiếp, Dropshipping và Trình phát hành hoá đơn) đã được cập nhật để nguồn nội dung được nhúng sẽ kế thừa CNAME do người bán thiết lập. Nói một cách đơn giản, nội dung được nhúng đã được cập nhật thành nội dung của bên thứ nhất với trang nhúng nội dung đó, đảm bảo không có sự gián đoạn nào do các thay đổi về cookie của bên thứ ba.

2. Ứng dụng bên thứ ba

Đối với các ứng dụng của bên thứ ba được truy cập thông qua Backoffice, Tray đã triển khai một phương pháp linh động hơn. Cách hoạt động như sau:

  • Triển khai thuộc tính được phân vùng: Việc triển khai thuộc tính cookie Partitioned được duy trì cho các nhà cung cấp đáng tin cậy, cho phép các ứng dụng bên thứ ba đặt cookie một cách hiệu quả trên các trình duyệt hỗ trợ CHIPS.
  • Khi cookie của bên thứ ba bị chặn: Nếu trình duyệt của người dùng chặn 3PC, thì ứng dụng của bên thứ ba sẽ mở trong một cửa sổ mới (của bên thứ nhất). Điều này giúp tránh các vấn đề khi mở và đảm bảo hoạt động liên tục, ngay cả khi có các quy định hạn chế về 3PC.
  • Khi cho phép cookie của bên thứ ba: Nếu trình duyệt của người dùng cho phép 3PC, thì ứng dụng sẽ tiếp tục mở trong iframe như trước.

Trực quan hoá giải pháp

Hình sau đây minh hoạ giải pháp. Bằng cách kế thừa miền chính của cửa hàng (merchant.example), tất cả ứng dụng được nhúng đều xuất phát từ cùng một nguồn. Điều này khiến tất cả các tiện ích đều là của bên thứ nhất với nhau, nghĩa là các hạn chế của bên thứ ba không phải là một yếu tố. Vì tất cả các khung này đều trở thành bên thứ nhất với nhau, nên các nguyên tắc về quyền riêng tư sẽ áp dụng cho các nguyên tắc của các cookie bên thứ nhất khác: bạn chỉ có thể truy cập vào các khung này trong ngữ cảnh của bên thứ nhất và giới hạn khả năng theo dõi trên nhiều trang web.

Mọi dịch vụ bên thứ ba không thuộc sở hữu của Tray đều sử dụng thuộc tính Partitioned để đặt cookie CHIPS, nghĩa là các dịch vụ này cũng chỉ có thể truy cập được trong bối cảnh mà chúng được đặt và giới hạn khả năng theo dõi trên nhiều trang web.

Sơ đồ minh hoạ các ví dụ về CHIPS: các tiện ích được chuyển sang miền của bên thứ nhất có thể truy cập vào hộp cookie của bên thứ nhất; các tiện ích của bên thứ ba sử dụng hộp cookie được phân vùng.

Kết quả cuối cùng

  • Không có giải pháp chung cho tất cả các vấn đề về quyền riêng tư trên web; có nhiều cách để mang lại trải nghiệm liền mạch cho người dùng mà vẫn bảo vệ quyền riêng tư.
  • Việc hợp nhất tài nguyên vào cùng một miền cấp cao nhất cho phép cookie hoạt động ngay cả khi có các quy định hạn chế về cookie của bên thứ ba.
  • CHIPS có thể là giải pháp dễ dàng hơn so với việc di chuyển tất cả tài nguyên sang cùng một trang web cấp cao nhất.
  • Giải pháp Tray's bền vững và hoạt động trên nhiều trình duyệt. Khi các trình duyệt bổ sung triển khai tính năng hỗ trợ CHIPS, CHIPS có thể được coi là một giải pháp đáng tin cậy trên nhiều trình duyệt cho các trường hợp như Tray's.