Bangun satu inventaris dari apa yang dimuat browser
Mulailah dengan halaman representatif: beranda, landing, detail produk, pencarian, keranjang, checkout, akun, dan kampanye. Catat kunjungan baru dan kunjungan kembali di Chrome DevTools. Bandingkan bukti dari browser dengan tag manager, plug-in CMS, dan dependensi kode; satu tampilan dapat melewatkan skrip yang disuntikkan.
Gunakan satu baris per vendor atau integrasi, bukan hanya per URL. Tangkap domain yang dikontaknya dan apakah ia dapat menambahkan tag. Beri pemilik bisnis yang dapat mempertahankan tujuan dan menyetujui penghapusan. Periksa ulang setelah kampanye, perubahan vendor, rilis template, dan redesain.
Simpan halaman, perjalanan, vendor domain, permintaan, ukuran transfer, pekerjaan main-thread, dan kondisi pengujian. Jejak laboratorium (lab trace) adalah bukti diagnostik, bukan janji untuk setiap pengunjung.
Cantumkan tujuan, pemilik, kategori persetujuan, pemicu, data yang terekspos, urutan ketergantungan, fallback, dan tanggal peninjauan.
Buat keputusan simpan, hapus, dan anggaran menjadi transparan
Tanyakan kepada setiap pemilik apa yang paling buruk jika integrasi itu menghilang. Jika jawaban kabur, nonaktifkan atau hapus. web.dev merekomendasikan anggaran, menghindari fungsi duplikat, dan membersihkan skrip redundan.
Anggaran adalah penjaga tim, bukan ambang universal. Tetapkan batas per-vendor dan per-halaman untuk byte, permintaan, waktu main-thread, dan waktu muat. Bandingkan baseline dengan perubahan. Minta pemilik untuk tetap dalam batasan, menghapus biaya lain, atau mendapatkan pengecualian yang kedaluwarsa. Gunakan perjalanan yang sebanding dan metrik berfokus pengguna.
Simpan hanya dependensi yang memiliki tujuan saat ini, biaya dan penggunaan data yang disetujui pemilik, serta jalur kegagalan yang dapat diterima.
Pensiunkan pixel kedaluwarsa, analitik duplikat, chat yang tidak aktif, eksperimen yang tidak digunakan, dan plug-in yang ditinggalkan melalui rilis bertahap.
Catat alasan, biaya, pemberi persetujuan, tindakan kompensasi, dan tanggal peninjauan.
Muat terlambat hanya jika terlambat aman
Pilih perilaku pemuatan secara sengaja. Skrip eksternal klasik tanpa atribut async, defer, atau module akan diambil dan dieksekusi sebelum parsing HTML berlanjut. Dengan async, pengunduhan berjalan paralel tetapi eksekusi dimulai saat siap, sehingga urutan tidak terjamin. Dengan defer, skrip klasik eksternal dijalankan setelah parsing dan dalam urutan dokumen, sebelum DOMContentLoaded. Defer cocok untuk skrip berurutan; ia bukan solusi universal.
Untuk antarmuka opsional seperti chat, sosial, peta, video, atau rekomendasi, tampilkan placeholder ringan dan muat vendor setelah klik atau ketika relevan. Pola facade ini memulai dari kontrol Anda sendiri daripada embed penuh. Pertahankan interaksi keyboard dan sediakan ruang tampilan. Jangan tunda kode yang diperlukan untuk menghitung harga, masuk, memproses pembayaran, menyediakan aksesibilitas esensial, atau memenuhi kewajiban yang telah dikonfirmasi tanpa alternatif yang telah ditinjau.
Muat segera hanya untuk dependensi tugas pertama; gunakan muat pasca-parse untuk kode yang berurutan dan muat berdasarkan interaksi atau visibilitas untuk embed opsional.
Jangan tandai skrip yang saling bergantung sebagai async dan mengharapkan urutan tetap; dokumentasikan dan uji rantai publikasinya.
Jangan mengikat UI kritis ke event window load; embed pihak ketiga dapat menundanya bahkan saat async atau defer digunakan.
Jadikan persetujuan sebagai gerbang, bukan pemikiran kemudian
Klasifikasikan setiap vendor dengan pemangku kepentingan privasi dan hukum yang memahami yurisdiksi dan aliran data. Untuk integrasi yang dibatasi persetujuan, pastikan status persetujuan tersedia sebelum tag mengirim data terkait. Google mengatakan perintah default consent-nya harus dijalankan sebelum perintah pengukuran, dan pembaruan harus mengikuti perubahan pilihan. Panduan produk ini bukan nasihat hukum.
Uji kunjungan pertama tanpa pilihan, dengan penerimaan, penolakan, dan penarikan. Periksa antarmuka dan jaringan: widget tersembunyi tidak membuktikan tidak ada permintaan atau pengenal yang dikirim. Jika platform persetujuan dimuat secara asinkron, uji waktu muatnya. Pertahankan pilihan secara tepat dan terapkan perubahan pada halaman saat ini serta kunjungan berikutnya.
Jangan mengandalkan label vendor. Catat mengapa tag itu esensial, opsional, atau dilarang untuk wilayah atau perjalanan tertentu dan peroleh persetujuan.
Setelah penarikan persetujuan, pastikan tag nonesensial yang dikonfigurasi tidak dimuat atau mengirim data dan simpan bukti pengujian.
Kurangi jangkauan dampak dari kode yang tidak Anda kendalikan
OWASP mengidentifikasi hilangnya kontrol atas perubahan klien, eksekusi kode sewenang-wenang di browser, dan pengungkapan data sensitif sebagai risiko sentral. Batasi akses penerbitan tag, tinjau HTML kustom atau fitur kode sewenang-wenang, dan dokumentasikan field data-layer yang diperbolehkan. Perjanjian vendor dan tinjauan keamanan yang memenuhi syarat dapat membantu untuk integrasi berisiko tinggi; keduanya bukan pengganti pengujian.
Subresource Integrity, atau SRI, memungkinkan browser memverifikasi skrip terhadap hash kriptografi. Ini berguna hanya ketika sumber dapat dipin dan pengiriman lintas-origin mendukung CORS; W3C mengatakan menggunakan SRI tanpa CORS adalah kesalahan logis. Ini kurang cocok untuk banyak URL vendor yang berubah-ubah. Iframe dengan sandbox dapat mengurangi akses langsung ke DOM host dan cookie, tetapi memerlukan tinjauan spesialis. Alur pembayaran dan alur yang sensitif terhadap keamanan memerlukan tinjauan yang memenuhi syarat.
Kirim hanya field yang didokumentasikan dan diperlukan untuk tujuan. Jangan mengekspos rahasia, data pembayaran, atau atribut pelanggan yang tidak perlu.
SRI memverifikasi byte, bukan apakah penggunaan data atau permintaan selanjutnya sesuai; isolasi bukan solusi satu-klik.
Latih kegagalan vendor sebelum pelanggan mengalaminya
Untuk setiap vendor yang dipertahankan, blokir domainnya di lingkungan pengujian atau pemblokir permintaan browser, lalu jalankan perjalanan. Uji juga respons yang lambat dan konfigurasi tag-manager tanpa integrasi tersebut. Konfirmasi konten utama, navigasi, formulir, checkout, dan akses akun berfungsi seperti yang diharapkan. Ini menyingkap asumsi sebelum rilis.
Tentukan remediasi sebelum insiden: siapa yang bisa menonaktifkan tag, apakah diperlukan flag atau publish di tag-manager, bagaimana melakukan rollback, dan bagaimana memverifikasi. SIU adalah optimasi ketersediaan proaktif dan remediasi: gunakan inventaris, anggaran, pra-penerbangan, dan latihan rollback untuk mengurangi risiko dependensi. SIU tidak dapat mengendalikan infrastruktur vendor, menjamin ketersediaan, atau menggantikan tinjauan.
Nyatakan apa yang tetap dapat digunakan tanpa vendor, apa yang mungkin menurun, fallback-nya, dan batas maksimum keterlambatan sebelum penonaktifan.
Lampirkan jejak sebelum-dan-sesudah, hasil persetujuan, hasil vendor diblokir, dan pemilik rollback pada catatan perubahan.
