Xây một danh mục duy nhất từ những gì trình duyệt tải
Bắt đầu với các trang đại diện: trang chủ, landing, trang chi tiết, tìm kiếm, giỏ hàng, thanh toán, tài khoản và chiến dịch. Ghi lại lượt truy cập mới và lượt quay lại bằng Chrome DevTools. So sánh bằng chứng từ trình duyệt với trình quản lý thẻ, plug-in CMS và phụ thuộc mã; một nguồn có thể bỏ sót script bị chèn vào.
Dùng một hàng cho mỗi nhà cung cấp hoặc tích hợp, không chỉ theo URL. Ghi lại các tên miền nó liên hệ và liệu nó có thể thêm thẻ hay không. Giao cho nó một chủ sở hữu doanh nghiệp có thể bảo vệ mục đích và phê duyệt việc gỡ bỏ. Rà soát lại sau chiến dịch, thay đổi nhà cung cấp, phát hành template và thiết kế lại.
Lưu trang, hành trình, tên miền nhà cung cấp, các yêu cầu, kích thước truyền, công việc trên luồng chính và điều kiện thử nghiệm. Một trace phòng lab là bằng chứng chẩn đoán, không phải là lời hứa cho mọi khách truy cập.
Bao gồm mục đích, chủ sở hữu, loại đồng ý, trigger, dữ liệu bị lộ, thứ tự phụ thuộc, fallback và ngày rà soát.
Làm cho các quyết định giữ, gỡ và ngân sách hiển thị
Hỏi mỗi chủ sở hữu điều gì sẽ tệ hơn nếu tích hợp biến mất. Nếu trả lời mơ hồ, vô hiệu hóa hoặc gỡ bỏ nó. web.dev khuyến nghị đặt ngân sách, tránh chức năng trùng lặp và dọn dẹp script thừa.
Ngân sách là rào chắn cho đội, không phải ngưỡng toàn cục. Đặt hạn mức theo nhà cung cấp và trang cho byte, số yêu cầu, thời gian trên luồng chính và thời gian tải. So sánh baseline với một thay đổi. Yêu cầu chủ sở hữu ở trong hạn mức, gỡ bỏ một chi phí khác hoặc xin ngoại lệ có thời hạn. Dùng hành trình tương đương và các chỉ số hướng về người dùng.
Chỉ giữ phụ thuộc có mục đích hiện tại, chi phí và việc sử dụng dữ liệu được chủ sở hữu chấp nhận, và có đường chịu lỗi (failure path) chấp nhận được.
Loại bỏ pixel hết hạn, analytics trùng lặp, chat không hoạt động, thí nghiệm không dùng và plug-in bị bỏ hoang theo phát hành từng giai đoạn.
Ghi lý do, chi phí, người phê duyệt, hành động bù trừ và ngày rà soát.
Chỉ tải muộn khi việc tải muộn là an toàn
Chọn hành vi tải một cách có chủ ý. Một script ngoài cổ điển mà không có async, defer hay module sẽ được tải và thực thi trước khi trình phân tích HTML tiếp tục. Với async, tải chạy song song nhưng thực thi bắt đầu khi sẵn sàng, nên thứ tự không đảm bảo. Với defer, các script ngoài cổ điển chạy sau khi phân tích xong và theo thứ tự tài liệu, trước DOMContentLoaded. Defer phù hợp cho script cần thứ tự; nó không phải là phương án toàn diện.
Với các giao diện chat, mạng xã hội, bản đồ, video hoặc gợi ý không bắt buộc, hiển thị một placeholder nhẹ và chỉ tải nhà cung cấp sau khi nhấp hoặc khi cần. Mẫu facade này bắt đầu bằng điều khiển của bạn thay vì nhúng đầy đủ. Bảo toàn tương tác bàn phím và dự trữ kích thước. Không hoãn mã cần thiết để tính giá, đăng nhập, xử lý thanh toán, cung cấp chức năng tiếp cận thiết yếu, hoặc thực hiện nghĩa vụ đã xác nhận mà không có phương án thay thế đã được rà soát.
Chỉ tải ngay lập tức cho phụ thuộc của tác vụ đầu tiên; dùng sau khi phân tích (post-parse) cho mã cần thứ tự và trigger theo tương tác hoặc hiển thị cho nhúng tùy chọn.
Đừng đánh dấu các script phụ thuộc lẫn nhau là async và kỳ vọng thứ tự được giữ. Ghi tài liệu và kiểm tra chuỗi công bố.
Đừng gắn UI quan trọng vào window load; các nhúng bên thứ ba có thể trì hoãn nó ngay cả khi dùng async hoặc defer.
Đặt đồng ý (consent) làm cổng, không phải phụ lục
Phân loại mỗi nhà cung cấp với các bên liên quan về quyền riêng tư và pháp lý, những người hiểu các quyền tài phán và luồng dữ liệu. Với tích hợp bị ràng buộc bởi đồng ý, thiết lập trạng thái đồng ý trước khi thẻ gửi dữ liệu liên quan. Google nói lệnh mặc định về đồng ý (consent command) nên chạy trước các lệnh đo lường, và các cập nhật nên theo sau khi người dùng đổi lựa chọn. Hướng dẫn sản phẩm này không phải là tư vấn pháp lý.
Kiểm tra lần truy cập đầu tiên khi chưa chọn, chấp nhận, từ chối và rút lui. Kiểm tra giao diện và mạng: một widget bị ẩn không chứng tỏ không có yêu cầu hoặc định danh đã gửi. Nếu nền tảng đồng ý (consent platform) tải bất đồng bộ, kiểm tra thời điểm. Lưu lựa chọn đúng cách và áp dụng thay đổi trên trang hiện tại và lần truy cập sau.
Đừng chỉ dựa vào nhãn của nhà cung cấp. Ghi lý do thẻ là thiết yếu, tùy chọn hoặc bị cấm cho một vùng quyền hạn hay hành trình và lấy phê duyệt.
Sau khi rút quyền, xác nhận các thẻ không thiết yếu được cấu hình không tải hoặc gửi dữ liệu và giữ bằng chứng kiểm tra.
Giảm diện hỏa lực của mã bạn không kiểm soát
OWASP xác định mất kiểm soát việc thay đổi phía client, thực thi mã tùy ý trong trình duyệt và lộ dữ liệu nhạy cảm là các rủi ro trọng yếu. Giảm quyền xuất bản thẻ, rà soát HTML tùy chỉnh hoặc tính năng mã tùy ý, và ghi tài liệu các trường data-layer được cho phép. Hợp đồng nhà cung cấp và rà soát bảo mật có trình độ có thể giúp cho tích hợp rủi ro cao; nhưng không thay thế việc kiểm thử.
Subresource Integrity, hay SRI, cho phép trình duyệt xác minh một script theo băm mật mã. Nó chỉ giúp khi tài nguyên có thể được ghim và phân phối cross-origin hỗ trợ CORS; W3C nói dùng SRI mà không có CORS là lỗi logic. Nó không phù hợp với nhiều URL nhà cung cấp hay thay đổi. Một iframe sandbox có thể giảm truy cập trực tiếp tới DOM và cookie của host, nhưng cần rà soát chuyên môn. Luồng thanh toán và các luồng nhạy cảm về bảo mật cần được rà soát bởi chuyên gia có trình độ.
Chỉ truyền các trường đã tài liệu hóa cần thiết cho mục đích. Đừng lộ bí mật, dữ liệu thanh toán hoặc thuộc tính khách hàng không cần thiết.
SRI xác minh bytes, không đánh giá việc sử dụng dữ liệu hay các yêu cầu sau đó; cô lập không phải là giải pháp thay thế sẵn có.
Luyện tập thất bại của nhà cung cấp trước khi khách hàng gặp phải
Với mỗi nhà cung cấp giữ lại, chặn tên miền của họ trong môi trường thử nghiệm hoặc bằng trình chặn yêu cầu của trình duyệt, rồi thực hiện hành trình. Cũng thử phản hồi chậm và cấu hình trình quản lý thẻ không có tích hợp. Xác nhận nội dung chính, điều hướng, biểu mẫu, thanh toán và truy cập tài khoản hoạt động như dự định. Điều này phơi bày giả định trước khi phát hành.
Xác định biện pháp khắc phục trước sự cố: ai có thể vô hiệu hoá thẻ, có cần flag hay publish trong trình quản lý thẻ không, cách rollback, và cách xác minh. SIU là tối ưu hóa thời gian hoạt động và khắc phục chủ động: dùng danh mục, ngân sách, preflight và diễn tập rollback để giảm rủi ro phụ thuộc. SIU không thể điều hành hạ tầng nhà cung cấp, đảm bảo độ khả dụng hay thay thế rà soát.
Nêu điều gì vẫn dùng được khi không có nhà cung cấp, điều gì có thể suy giảm, fallback, và độ trễ tối đa trước khi vô hiệu hoá.
Đính trace trước và sau, kết quả đồng ý, kết quả khi chặn nhà cung cấp và người chịu trách nhiệm rollback vào bản ghi thay đổi.
