CSP Reporting: Cara Mendeteksi Pelanggaran Kebijakan Keamanan Website

Content Security Policy (CSP) membantu pemilik website membatasi sumber skrip, stylesheet, gambar, dan resource lain yang boleh dimuat browser. Kebijakan yang tepat dapat mengurangi dampak serangan seperti cross-site scripting (XSS). Namun, CSP yang terlalu ketat bisa memblokir fitur sah, sedangkan kebijakan yang terlalu longgar memberi perlindungan terbatas. Di sinilah CSP reporting berguna: browser dapat mengirim laporan ketika menemukan pelanggaran kebijakan, sehingga pengelola memperoleh petunjuk sebelum dan sesudah aturan diterapkan.

Apa itu CSP reporting?

CSP reporting adalah mekanisme untuk mengumpulkan laporan tentang resource atau tindakan yang melanggar kebijakan keamanan konten. Misalnya, website hanya mengizinkan skrip dari domain sendiri, tetapi sebuah halaman mencoba memuat skrip dari domain yang tidak tercantum. Browser dapat memblokir tindakan tersebut dan, bila pelaporan dikonfigurasi, mengirim informasi mengenai pelanggarannya ke endpoint laporan.

Laporan bukan bukti otomatis bahwa website sedang diserang. Penyebabnya bisa berupa kode lama, tag analitik, widget pihak ketiga, konfigurasi CDN, atau ekstensi browser. Karena itu, laporan harus dibaca sebagai sinyal investigasi, bukan vonis.

Report-Only dan kebijakan yang benar-benar diterapkan

Sebelum menegakkan CSP, pengelola dapat memakai header Content-Security-Policy-Report-Only. Dalam mode ini, browser mengevaluasi kebijakan dan dapat mengirim laporan, tetapi tidak memblokir resource hanya karena aturan tersebut. Mode ini cocok untuk mengamati halaman nyata, mengidentifikasi dependensi yang terlupakan, dan menyesuaikan kebijakan dengan risiko yang dapat diterima.

Setelah laporan ditinjau dan aturan diuji, kebijakan dapat dipindahkan ke header Content-Security-Policy agar benar-benar diberlakukan. Mode Report-Only bukan pengganti perlindungan aktif; selama tahap ini, resource yang melanggar kebijakan masih dapat dimuat.

Menyiapkan endpoint laporan

Implementasi CSP reporting dapat menggunakan mekanisme Reporting API melalui direktif report-to dan header Reporting-Endpoints. Contoh konseptual berikut menunjukkan nama endpoint yang dipasangkan dengan URL penerima laporan:

Reporting-Endpoints: csp-endpoint="https://reports.example.com/csp"

Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self'; report-to csp-endpoint

Contoh tersebut perlu disesuaikan dengan infrastruktur, dukungan browser, dan kebijakan website. Sejumlah implementasi lama menggunakan direktif report-uri; dukungan dan perilakunya berbeda antarbrowser. Periksa dokumentasi browser yang menjadi target, lalu uji respons header di lingkungan staging sebelum mengandalkannya di produksi.

Endpoint harus menerima format laporan yang digunakan browser dan menangani permintaan secara aman. Jangan membuat endpoint yang memercayai semua data masuk, menampilkan isi laporan langsung ke halaman admin, atau menyimpan data tanpa batas. Validasi ukuran dan format permintaan, batasi laju pengiriman, dan pisahkan endpoint laporan dari jalur aplikasi utama bila memungkinkan.

Cara membaca laporan pelanggaran

Isi laporan dapat mencakup direktif yang dilanggar, resource yang dicoba dimuat, URL dokumen, serta informasi konteks lain. Bentuk dan kelengkapan datanya dapat berbeda menurut browser dan versi mekanisme pelaporan. Gunakan beberapa pertanyaan saat melakukan triase:

  • Apakah resource itu dikenal? Cocokkan domain dan jalur dengan dependensi yang memang digunakan website.
  • Apakah pelanggaran terjadi di halaman tertentu? Kelompokkan berdasarkan jenis halaman, direktif, dan waktu untuk menemukan pola.
  • Apakah sumbernya konsisten? Laporan berulang dari kode aplikasi berbeda maknanya dengan laporan sporadis yang mungkin berasal dari ekstensi browser.
  • Apakah perubahan baru menjadi pemicunya? Bandingkan waktu laporan dengan rilis kode, perubahan header, konfigurasi tag, atau migrasi CDN.

Agregasikan laporan yang serupa agar lonjakan satu jenis pelanggaran tidak menenggelamkan masalah lain. Tetapkan ambang untuk peringatan, tetapi hindari menganggap setiap laporan sebagai insiden kritis. Catat keputusan investigasi supaya tim memahami mengapa sebuah sumber diizinkan atau tetap diblokir.

Privasi dan risiko operasional

Laporan dapat mengandung URL halaman, parameter query, atau informasi yang tidak seharusnya dikumpulkan. Hindari menempatkan token akses, alamat email, ID pelanggan, atau data pribadi dalam URL. Jika laporan memuat data sensitif, minimalkan data sejak aplikasi membentuk URL, redaksi bagian yang tidak diperlukan, batasi akses penyimpanan, dan tetapkan masa retensi yang jelas.

Endpoint publik juga dapat disalahgunakan untuk membanjiri sistem dengan laporan palsu. Terapkan rate limiting, batas ukuran, pemantauan volume, dan kebijakan retensi. Jangan menjadikan isi laporan sebagai HTML tepercaya atau menjalankannya sebagai kode. Laporan adalah masukan eksternal yang perlu diperlakukan seperti data tidak tepercaya lainnya.

Kesimpulan

CSP Reporting memberi visibilitas atas pelanggaran kebijakan keamanan, tetapi laporan perlu ditriase dan diperlakukan sebagai input tidak tepercaya. Mulai dengan Report-Only, perbaiki sumber pelanggaran yang sah, lalu tegakkan kebijakan secara bertahap sambil memantau dampaknya pada fitur penting.

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

Bagikan artikel ini

Tinggalkan komentar

Server Load: 23% · CMH · ⚡ --ms