Ketika sebuah website mengalami pelanggaran Content Security Policy (CSP), memakai API browser yang mulai ditinggalkan, atau menerima laporan isolasi lintas-origin, masalahnya sering baru diketahui setelah pengguna mengeluh. Reporting API membantu mengirim laporan terstruktur dari browser ke endpoint yang dikelola pemilik situs. Dengan pengaturan yang tepat, tim dapat menemukan pola masalah tanpa harus mengandalkan tangkapan layar atau reproduksi manual. Untuk memahami pelaporan pelanggaran secara lebih mendalam, baca panduan CSP reporting untuk mendeteksi pelanggaran dan dokumentasi Reporting API di MDN.
API ini bukan alat yang otomatis memperbaiki keamanan. Fungsinya adalah memberi sinyal agar pengelola dapat menyelidiki penyebab, mengukur frekuensi, dan menentukan prioritas perbaikan. Laporan juga bisa berisi URL dan detail lingkungan pengguna, sehingga pengumpulan data harus dirancang dengan mempertimbangkan privasi.
Apa itu Reporting API?
Reporting API menyediakan mekanisme umum bagi browser untuk mengirim laporan tentang kejadian tertentu kepada endpoint yang diumumkan server. Jenis laporan yang dapat muncul bergantung pada browser dan fitur yang digunakan, misalnya pelanggaran CSP, kebijakan isolasi lintas-origin, atau penggunaan fitur web yang mengalami deprecation.
Server biasanya mendefinisikan tujuan laporan melalui header respons Reporting-Endpoints. Header tersebut memetakan nama endpoint ke URL HTTPS. Kebijakan yang mendukung pelaporan kemudian merujuk nama itu, bukan mengulang URL pada setiap aturan. Untuk CSP, contohnya adalah direktif report-to. Header lama Report-To telah digantikan untuk konfigurasi endpoint baru, meskipun kompatibilitas browser tetap perlu diperiksa.
Contoh konfigurasi dasar untuk laporan CSP
Contoh berikut menunjukkan bentuk konfigurasi awal. Ganti alamat contoh dengan endpoint HTTPS yang benar-benar tersedia pada server milik sendiri. Jangan memasang header ini sebelum endpoint siap menerima dan memproses laporan.
Reporting-Endpoints: csp-reports="https://reports.example.com/csp"
Content-Security-Policy: default-src 'self'; object-src 'none'; base-uri 'self'; report-to csp-reports; report-uri https://reports.example.com/cspDirektif report-to mengacu pada nama csp-reports yang didefinisikan di header pertama. report-uri disertakan sebagai jalur kompatibilitas untuk browser lama yang belum mendukung mekanisme baru secara konsisten. Dukungan aktual berbeda antarversi browser, jadi uji hasilnya pada kombinasi browser yang digunakan pengunjung.
Jika kebijakan CSP masih dalam tahap evaluasi, pertimbangkan mode Content-Security-Policy-Report-Only. Mode ini mengirim laporan tanpa memblokir sumber daya. Setelah laporan ditinjau dan aturan tidak lagi memutus fungsi penting, kebijakan dapat diterapkan secara bertahap sebagai kebijakan penegakan.
Jenis laporan dan cara membacanya
Setiap laporan umumnya memiliki tipe kejadian dan bagian isi yang menjelaskan konteks. Pada laporan CSP, informasi dapat mencakup direktif yang dilanggar, URL dokumen, sumber daya yang diblokir, serta apakah kebijakan sedang diuji atau ditegakkan. Laporan deprecation dapat membantu menemukan API yang perlu diganti sebelum dukungan browser berubah.
Jangan langsung menyimpulkan bahwa setiap laporan berarti serangan. Pelanggaran CSP dapat berasal dari skrip pihak ketiga, ekstensi browser, konfigurasi yang terlalu ketat, atau kode lama yang belum diperbarui. Kelompokkan laporan menurut tipe, direktif, halaman, dan waktu kejadian. Prioritaskan pola yang berulang pada halaman penting, bukan satu kejadian yang tidak dapat direproduksi.
Membangun endpoint penerima yang aman
Endpoint pelaporan biasanya menerima permintaan POST berisi JSON. Implementasi server perlu memvalidasi tipe konten dan struktur data, membatasi ukuran payload, menetapkan batas laju, serta menolak input yang tidak sesuai. Browser atau pihak lain dapat menghasilkan banyak laporan, sehingga endpoint yang terbuka tanpa pembatasan berisiko disalahgunakan untuk membebani penyimpanan atau sistem pemantauan.
- Terima hanya metode dan format laporan yang dibutuhkan.
- Batasi ukuran body, jumlah permintaan, dan masa penyimpanan.
- Simpan laporan sebagai data yang tidak tepercaya; lakukan escaping sebelum menampilkannya pada dashboard.
- Hindari mengirim laporan mentah ke log publik atau kanal notifikasi yang tidak dibatasi aksesnya.
- Deduplicasi kejadian yang sama agar lonjakan laporan tidak menenggelamkan sinyal penting.
Jangan mengandalkan alamat IP sebagai satu-satunya cara mengidentifikasi sumber laporan. Data tersebut bisa berubah, dibagi banyak pengguna, atau tidak tersedia dengan cara yang sama pada semua infrastruktur.
Privasi dan retensi data
Laporan dapat menyertakan URL halaman, referer, nama browser, atau potongan kebijakan. Dalam aplikasi tertentu, URL juga dapat memuat parameter yang sensitif. Sebelum mengaktifkan pelaporan, tinjau apakah endpoint perlu menghapus query string, menyamarkan pengenal, atau membuang bidang yang tidak diperlukan untuk investigasi.
Tetapkan siapa yang boleh membaca laporan, berapa lama data disimpan, dan bagaimana penghapusan dilakukan. Gunakan HTTPS, batasi akses dashboard, serta pisahkan data operasional dari informasi identitas. Berikan pemberitahuan privasi yang sesuai jika praktik pengumpulan data situs mengharuskannya.
Pengujian sebelum diterapkan
Mulailah di lingkungan staging atau dengan mode Report-Only. Buat pelanggaran yang aman dan disengaja, lalu periksa apakah laporan tiba, dapat diparsing, dan masuk ke kelompok yang benar. Uji juga respons endpoint terhadap payload terlalu besar, format rusak, serta lonjakan permintaan. Pastikan kegagalan endpoint tidak mengganggu pemuatan halaman utama.
Setelah diterapkan, pantau jumlah laporan per tipe dan halaman, waktu respons endpoint, rasio payload yang ditolak, serta usia laporan terbaru. Buat ambang notifikasi untuk lonjakan yang tidak biasa, tetapi gunakan deduplikasi agar satu masalah tidak mengirim ribuan peringatan.
Batasan yang perlu dipahami
Reporting API bukan jaminan semua browser akan mengirim semua kejadian. Laporan dapat hilang karena dukungan fitur berbeda, pengguna menutup browser, jaringan terputus, atau kebijakan privasi. Karena itu, gunakan laporan sebagai salah satu sumber observabilitas, bukan sebagai satu-satunya bukti bahwa website aman atau bebas kesalahan.
Dokumentasi Reporting-Endpoints di MDN dan direktif CSP report-to dapat digunakan untuk memeriksa sintaks dan kompatibilitas terbaru.
Kesimpulan
Reporting API memberi tim web cara yang lebih sistematis untuk mengetahui pelanggaran kebijakan dan perubahan perilaku browser. Mulailah dengan endpoint HTTPS yang aman, uji melalui Report-Only, validasi serta deduplikasi data, lalu tetapkan aturan retensi dan akses. Hasilnya akan lebih berguna bila setiap laporan ditinjau dalam konteks aplikasi dan ditindaklanjuti dengan perbaikan yang terukur.
PENGALAMAN BARU Coba tampilan baru Penasaran dengan pengalaman membaca Nazuaf versi modern? Coba tampilan baru yang dirancang agar nyaman dibaca dari ponsel dan pc. Buka versi modern dan lanjutkan membaca artikel ini. Jelajahi tampilan baru Nazuaf versi modern · Ketuk kartu untuk mencoba