STATUS IS UPWIKI TỐI ƯU HÓA WEBSITE
23Củng cố
Hiệu năng và phân phối / Củng cố

Kiểm soát script bên thứ ba trước khi chúng kiểm soát trang của bạn

Một hệ thống thực dụng để tìm script bên ngoài, chứng minh giá trị, tải an toàn, tôn trọng quyền đồng ý (consent), kiểm tra khi thất bại và loại bỏ nhà cung cấp không còn dùng.

Kiểm soát script bên thứ ba trước khi chúng kiểm soát trang của bạn — HƯỚNG DẪN TRỰC QUAN
ĐỌC
8 phút
NGUỒN
7
TÁI XÁC NHẬN
2027-03-27
đã rà soát
Trưởng nhóm kỹ thuật hiệu suất với rà soát quyền riêng tư và bảo mật ứng dụng cho các tích hợp ràng buộc đồng ý hoặc nhạy cảm về bảo mật
CÂU TRẢ LỜI NGẮN GỌN

Bắt đầu từ quyết định.

Xem mỗi script bên thứ ba như một phụ thuộc có chủ sở hữu, lợi ích, ngân sách, loại đồng ý và ngày rà soát. Xây một danh mục duy nhất từ dấu vết trình duyệt, trình quản lý thẻ, plug-in CMS và mã nguồn. Ghi lại tên miền nhà cung cấp, trigger, dữ liệu bị lộ và điều gì sẽ hỏng nếu nhà cung cấp chậm hoặc mất tích. Loại bỏ trùng lặp và thẻ không có chủ trước tiên.

Giữ mã không thiết yếu ra khỏi đường dẫn kết xuất quan trọng — công việc trình duyệt cần để hiển thị màn hình đầu tiên. Chỉ tải mã cần cho tác vụ đầu tiên; hoãn widget độc lập đến khi có tương tác trong khi vẫn giữ thứ tự phụ thuộc. Kiểm tra các hành trình ưu tiên với quyền đồng ý được chấp nhận và bị từ chối, đồng thời chặn tên miền nhà cung cấp. Mã không thể chịu lỗi an toàn cần có fallback, cô lập hoặc một cách triển khai khác.

HƯỚNG DẪN TRỰC QUAN

Nhìn công việc như một hệ thống.

Dùng sơ đồ này để nối các quyết định trong bài trước khi hành động theo từng thủ thuật.

SIUCủng cố
01Xây một danh mục duy nhất từ những gì trình duyệt tải
02Làm cho các quyết định giữ, gỡ và ngân sách hiển thị
03Chỉ tải muộn khi việc tải muộn là an toàn
04Đặt đồng ý (consent) làm cổng, không phải phụ lục
01

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.

Bằng chứng tối thiểu

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.

Ghi lại quyết định

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.

02

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.

Giữ

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.

Gỡ bỏ

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.

Ngoại lệ

Ghi lý do, chi phí, người phê duyệt, hành động bù trừ và ngày rà soát.

03

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ọn trigger

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.

Tôn trọng thứ tự

Đừ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ố.

Tránh window load

Đừ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.

04

Đặ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.

Ghi lại phân loại

Đừ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.

Xác minh rút lui

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.

05

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 độ.

Giảm dữ liệu

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.

Biết giới hạn

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ó.

06

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.

Đặt tiêu chí thành công

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á.

Giữ bằng chứng phát hành

Đí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.

HÀNH ĐỘNG / XÁC MINH

Hướng dẫn việc cần làm thiết thực.

  1. 01

    Ghi lại tập phụ thuộc

    Trace các template ưu tiên, rồi so sánh bằng chứng trình duyệt với danh mục từ trình quản lý thẻ, CMS và mã.

    XÁC MINH: Mỗi tên miền bên thứ ba liên kết tới một hàng trong danh mục hoặc được điều tra trước khi phát hành.
  2. 02

    Chỉ định chủ sở hữu

    Ghi tên người chịu trách nhiệm về mục đích, chi phí, việc sử dụng dữ liệu và gia hạn.

    XÁC MINH: Không có tích hợp giữ lại nào thiếu chủ sở hữu, mục đích hoặc ngày rà soát.
  3. 03

    Gỡ mã thừa

    Thực hiện gỡ dần analytics trùng lặp, pixel hết hạn, thí nghiệm nằm im và plug-in không dùng.

    XÁC MINH: Các hành trình cần thiết và báo cáo được kiểm tra sau khi gỡ.
  4. 04

    Đặt ngân sách

    Đặt hạn mức trang và theo nhà cung cấp cho số yêu cầu, byte, công việc trên luồng chính và thời gian.

    XÁC MINH: Bản ghi phát hành so sánh thay đổi với hạn mức và ghi bất kỳ ngoại lệ có thời hạn nào.
  5. 05

    Xác thực tải và đồng ý

    Kiểm tra thứ tự phụ thuộc, fallback, sử dụng bàn phím và lựa chọn đồng ý.

    XÁC MINH: Kiểm tra mạng khớp hành vi tải và đồng ý đã được phê duyệt.
  6. 06

    Rà soát biên giới

    Giảm quyền xuất bản, tài liệu hóa trường dữ liệu và chỉ áp dụng SRI hoặc cô lập khi phù hợp với ràng buộc của chúng.

    XÁC MINH: Tích hợp có rà soát bảo mật hoặc quyền riêng tư phù hợp với rủi ro của nó.
  7. 07

    Chặn nhà cung cấp

    Mô phỏng nhà cung cấp không khả dụng hoặc chậm và chạy toàn bộ hành trình thiết yếu.

    XÁC MINH: Các tác vụ quan trọng đáp ứng tiêu chí fallback, hoặc rủi ro được thiết kế lại hoặc chấp nhận rõ ràng.
  8. 08

    Diễn tập vô hiệu hoá và rollback

    Ghi lại đường quyền vô hiệu hoá được ủy quyền và cách quay về cấu hình an toàn đã biết.

    XÁC MINH: Một người được đặt tên đã thử các bước trong môi trường phi sản xuất và ghi lại kết quả.
CHỦ ĐỀ THẢO LUẬN

So sánh các đánh đổi, không chia sẻ dữ liệu riêng tư.

Dùng các câu hỏi này với nhóm hoặc cộng đồng chủ sở hữu website. Chia sẻ phương pháp và bài học, nhưng tuyệt đối không dán thông tin đăng nhập, hồ sơ khách hàng hay chi tiết hạ tầng không công khai.

  1. 01

    Tích hợp bên thứ ba nào trên trang của bạn có lợi ích dễ đo lường nhất, và bằng chứng nào làm quyết định đó rõ ràng?

  2. 02

    Fallback nào đã giữ cho hành trình khách hàng hữu ích khi một widget, nhúng hoặc nhà cung cấp đo lường tùy chọn không khả dụng?

  3. 03

    Nhóm sản phẩm, marketing, quyền riêng tư và kỹ thuật của bạn quyết định như thế nào khi một ngoại lệ thẻ tạm thời nên hết hạn?

TÀI NGUYÊN PHỔ BIẾN / UY TÍN

Mở tài liệu nguồn.

web.devLoad Third-Party JavaScript ↗

Hướng dẫn của Google về tìm tài nguyên tốn kém, đo lường tác động, hoãn tải và tự lưu trữ.

Đã rà soát 2026-09-27
web.devThird-party JavaScript performance ↗

Tổng quan về chi phí mạng và kết xuất của bên thứ ba, ngân sách và dọn dẹp.

Đã rà soát 2026-09-27
MDN Web Docsscript: The Script element ↗

Tài liệu tham khảo về script cổ điển, async, defer, module, integrity và lỗi.

Đã rà soát 2026-09-27
OWASPThird Party JavaScript Management Cheat Sheet ↗

Hướng dẫn bảo mật về rủi ro bên thứ ba, kiểm soát thẻ, sandboxing, integrity và lộ dữ liệu.

Đã rà soát 2026-09-27
Google for DevelopersSet up consent mode on websites ↗

Hướng dẫn chính thức của Google Tag về mặc định đồng ý, cập nhật, thời điểm và tính bền vững lựa chọn.

Đã rà soát 2026-09-27
W3CSubresource Integrity ↗

Tiêu chuẩn cho metadata tính toàn vẹn script và ràng buộc cross-origin.

Đã rà soát 2026-09-27
Chrome for DevelopersPerformance features reference ↗

Cách ghi lại trace và phân biệt sự kiện phía thứ nhất và phía thứ ba.

Đã rà soát 2026-09-27

Chính sách nguồn. Bài viết này dùng tài liệu công khai chính hoặc có thẩm quyền được đọc trực tiếp. Tài nguyên chọn cho chi tiết triển khai, không lấy đoạn mã. Tài liệu sản phẩm không quyết định nghĩa vụ pháp lý. Liên kết nội bộ và SID là điều hướng, không phải bằng chứng.

GIẢI ĐÁP NHANH

Các câu hỏi thường gặp.

Mỗi script bên thứ ba có nên dùng async không?

Không. Async loại bỏ chặn parser khi tải nhưng không đảm bảo thứ tự và có thể ngắt quá trình kết xuất. Dùng cho script độc lập; dùng defer cho script cổ điển cần thứ tự; và dùng trigger theo tương tác cho nhúng tùy chọn.

Chúng tôi có thể tự lưu trữ JavaScript của nhà cung cấp để tăng độ tin cậy không?

Không tự động. Nó có thể tăng quyền kiểm soát về cache và phân phối, nhưng khiến bạn chịu trách nhiệm cho các bản vá và cập nhật bảo mật. Xác nhận điều khoản nhà cung cấp, quyền sở hữu vá lỗi và thử nghiệm hồi quy trước.

SRI có làm cho script của nhà cung cấp an toàn hơn không?

Không. SRI chỉ có thể xác minh bytes mong đợi khi phân phối hỗ trợ nó. Nó không đánh giá hành vi mong muốn, thu thập dữ liệu hay hoạt động mạng sau đó, và bất tiện cho nhiều script thay đổi thường xuyên.

Status Is UP Editorial Team · Biên tập viên Uptime Enablement

Được rà soát bởi Trưởng nhóm kỹ thuật hiệu suất với rà soát quyền riêng tư và bảo mật ứng dụng cho các tích hợp ràng buộc đồng ý hoặc nhạy cảm về bảo mật. Xuất bản 2026-09-27; cập nhật 2026-09-30.