M365Con 2027 – konferensi online gratis · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Mengapa Report-Only Berbeda dengan Enforced dalam Content Security Policy

By ·

Jika Anda serius soal keamanan web, memahami perbedaan antara mode ‘report-only’ dan ‘enforced’ dalam Content Security Policy…

Automatically translated with AI from the original post. Read the English original

Cover: Fix Conditional Access Loopholes in Microsoft 365

Jika Anda serius soal keamanan web, memahami perbedaan antara mode ‘report-only’ dan ‘enforced’ dalam Content Security Policy (CSP) bukan sekadar detail—ini adalah inti dari seluruh permainan. Mode report-only memungkinkan Anda melihat apa yang akan diblokir oleh kebijakan Anda tanpa benar-benar menghentikan apa pun, sehingga situs web Anda berfungsi seperti lahan uji coba keamanan. Mode enforced, di sisi lain, tidak main-main: mode ini memblokir apa pun yang melanggar kebijakan Anda dan mengunci situs Anda secara real time.

Artikel ini menguraikan mengapa kedua mode tersebut penting, apa dampaknya terhadap browser dan pengalaman pengguna, serta bagaimana melangkah dari sekadar pemantauan menuju perlindungan yang sesungguhnya. Artikel ini dirancang khusus untuk profesional keamanan dan pengembang yang berfokus pada Microsoft, yang ingin memastikan konfigurasi CSP mereka tepat—mencakup definisi, teknik praktik, serta praktik terbaik untuk penerapan yang aman dan kepatuhan yang cerdas.

Memahami Mode CSP dan Dampaknya

Sebelum Anda mulai menerapkan header CSP, Anda perlu memahami dua mode utama CSP: report-only dan enforced. Kedua mode ini lebih dari sekadar pengaturan—keduanya menentukan bagaimana browser modern melindungi (atau hanya mengamati) batas keamanan aplikasi web Anda. Pilihan Anda berdampak langsung pada tingkat risiko situs, kapasitas audit, dan kelancaran proses penerapan, terutama di lingkungan Microsoft berskala besar atau pengaturan multi-cloud.

Mode CSP dirancang untuk memberi fleksibilitas bagi tim web. Mode report-only adalah titik awal yang lembut, yang memungkinkan Anda memantau masalah tanpa khawatir merusak sesuatu bagi pengguna secara tidak sengaja. Mode ini mendukung penilaian risiko, membantu menemukan celah kebijakan, dan dapat mengidentifikasi kode lama atau perilaku pihak ketiga yang tidak terduga, sambil tetap menjaga aplikasi Anda beroperasi sepenuhnya.

Mode enforced adalah inti dari semuanya: mode ini memerintahkan browser untuk benar-benar menjalankan instruksi Anda. Jika konten tidak sesuai dengan kebijakan Anda, konten tersebut akan diblokir secara instan, sehingga mengurangi permukaan serangan untuk hal-hal seperti cross-site scripting atau skrip pihak ketiga yang berbahaya. Namun, ini juga berarti bahwa kesalahan atau kebijakan yang belum lengkap dapat mengganggu aplikasi Anda jika Anda tidak berhati-hati dalam pengujian dan adopsi.

Gagasan di balik adanya kedua mode CSP cukup sederhana: biarkan pengembang dan tim keamanan menyempurnakan aturan mereka di lingkungan nyata sebelum menarik pemicunya. Anggap ini seperti roda bantu untuk keamanan aplikasi Anda, tetapi dengan garis akhir tempat Anda beralih ke penegakan penuh. Selanjutnya, kita akan membahas secara rinci bagaimana report-only memberi Anda umpan balik dari dunia nyata dan apa yang berubah ketika penegakan mulai berlaku.

Cara Kerja Content-Security-Policy-Report-Only untuk Pelaporan Pelanggaran

Mode report-only adalah cara CSP membiarkan Anda mengamati dari tribun sebelum Anda melangkah ke lapangan. Ketika Anda menggunakan header HTTP Content-Security-Policy-Report-Only, Anda menginstruksikan browser untuk “mengawasi pelanggaran, tetapi jangan blokir apa pun—cukup laporkan.” Dengan cara ini, Anda menerima aliran laporan pelanggaran yang dikirim ke endpoint yang telah Anda tentukan, memberikan gambaran lengkap tentang apa yang akan diblokir jika kebijakan tersebut diterapkan secara enforced.

Browser akan mengirimkan laporan pelanggaran ini (sering kali dalam bentuk payload JSON) setiap kali sebuah resource melanggar aturan CSP Anda. Misalnya, jika sebuah halaman mencoba memuat skrip dari sumber yang tidak disetujui, tidak ada skrip yang diblokir dalam mode report-only—tetapi Anda tetap menerima peringatan dan detail seperti URL yang bermasalah, direktif mana yang dilanggar, serta terkadang contoh kode yang mencurigakan.

Mode ini sangat berharga untuk penilaian risiko dan pengujian yang aman. Anda dapat menerapkan aturan baru di sejumlah aplikasi web, memantau apa saja yang terpicu, lalu menyesuaikan kebijakan berdasarkan data nyata, bukan sekadar tebakan. Jika Anda menjalankan sistem lama atau memiliki alur kerja bisnis yang sangat kritis, Anda tidak perlu mengambil risiko gangguan situs maupun banyaknya permintaan dukungan dengan bergerak terlalu cepat.

Report-only juga mendukung penerapan secara bertahap. Mulai dengan kebijakan yang longgar, lihat apa yang perlu disesuaikan, lalu bergerak selangkah demi selangkah menuju keamanan yang lebih ketat. Mode ini membantu tim menemukan masalah pada skrip pihak ketiga, konten CDN, atau JavaScript yang diobfuskasi, yang mungkin baru terlihat ketika penegakan justru menyebabkan kegagalan besar. Selain itu, mode ini menjadi nilai tambah bagi kepatuhan—Anda memiliki bukti bahwa Anda aktif memantau, yang dapat membantu saat audit ketika organisasi perlu menunjukkan uji tuntas (due diligence).

Bagaimana Mode Enforced Meningkatkan Keamanan

Mode enforced adalah saat kebijakan CSP Anda berhenti menjadi sekadar saran dan menjadi aturan. Ketika Anda menggunakan header Content-Security-Policy, browser benar-benar memblokir konten apa pun yang tidak sesuai dengan direktif Anda. Tidak ada peringatan, langsung bertindak.

Mode ini secara signifikan memperkuat aplikasi web Anda terhadap serangan seperti XSS dan injeksi skrip yang tidak sah. Namun, berhati-hatilah: jika kebijakan Anda belum siap digunakan, Anda bisa secara tidak sengaja memblokir sumber daya yang diperlukan dan merusak fungsi situs. Menguji terlebih dahulu dalam mode report-only adalah langkah yang bijak. Pada akhirnya, mode enforced-lah yang mengubah kebijakan teoretis menjadi perlindungan praktis, sehingga menjadikannya standar emas untuk keamanan web yang kuat.

Menerapkan Pelaporan dengan Endpoint Report-URI dan Report-To

Menyiapkan pelaporan adalah saat kebijakan CSP Anda mendapatkan taring yang sesungguhnya, sekaligus sepasang mata. CSP memungkinkan Anda menentukan satu atau lebih endpoint (menggunakan report-uri atau report-to) tempat browser harus mengirim laporan pelanggaran. Saat pelanggaran terjadi, browser mengemas detail seperti sumber daya mana yang diblokir dan kebijakan mana yang gagal ke dalam pesan JSON atau HTTP POST yang rapi, lalu mengirimkannya ke endpoint Anda.

Direktif report-uri adalah metode lama: Anda menetapkan sebuah URL, dan browser langsung mengirim laporan ke sana. Namun, untuk fleksibilitas modern dan pelaporan yang lebih kaya, report-to adalah opsi yang lebih baru dan lebih andal, terutama seiring browser memperluas dukungan terhadap Reporting API. report-to bekerja dengan grup bernama yang dapat menangani berbagai jenis laporan dan menawarkan kontrol penyaringan yang lebih baik.

Saat mengonfigurasi endpoint ini, pastikan endpoint tersebut aman: gunakan HTTPS, kontrol akses, dan pantau lonjakan yang tidak biasa (yang bisa menandakan serangan atau kebijakan yang rusak). Jangan lupakan pula privasi: laporan dapat memuat URL atau bahkan cuplikan skrip yang bermasalah, sehingga Anda perlu siap membersihkan informasi sensitif sebelum menyimpan atau membagikannya, dengan tetap memperhatikan regulasi seperti GDPR dan CCPA.

Kekuatan utama di sini ada pada visibilitas. Dengan pelaporan yang dikonfigurasi dengan benar, Anda mendapatkan aliran data langsung tentang di mana kebijakan Anda menangkap pelanggaran, sehingga Anda bisa menyesuaikan, menyetel, dan akhirnya beralih ke enforcement dengan aman tanpa kejutan. Tingkat pemantauan ini sangat penting, baik Anda mengelola satu aplikasi maupun lingkungan Microsoft 365 yang luas.

Menelusuri Sintaks dan Direktif CSP untuk Desain Kebijakan yang Efektif

Menulis header CSP yang solid bukanlah hal yang rumit, tetapi memerlukan perhatian pada detail, terutama saat menangani aplikasi yang kompleks dan integrasi layanan cloud Microsoft. Pada dasarnya, kebijakan CSP adalah daftar direktif terstruktur, yang masing-masing memberi tahu browser apa yang diizinkan dan apa yang tidak. Anda mengirim kebijakan ini melalui header HTTP, biasanya sebagai Content-Security-Policy atau Content-Security-Policy-Report-Only, yang diformat sebagai rangkaian aturan yang dipisahkan titik koma.

Inti dari kebijakan Anda terletak pada direktif utama seperti default-src, script-src, dan img-src. default-src adalah cadangan Anda: jika jenis konten tertentu tidak memiliki aturannya sendiri, browser akan memeriksa aturan ini. script-src dan img-src berfokus pada skrip dan gambar, sehingga Anda dapat mengontrol secara ketat sumber tepercaya (misalnya domain Anda, CDN tepercaya, dan mungkin satu atau dua blob Microsoft Azure).

Sintaks itu penting. Setiap direktif mencantumkan nilai yang diizinkan: URL, skema seperti ‘https:’, atau kata kunci seperti ‘self’. Jika Anda mengizinkan skrip inline (kadang diperlukan untuk kode lama), Anda mungkin perlu ‘unsafe-inline’, tetapi berhati-hatilah: ini melemahkan perlindungan Anda kecuali Anda menggunakan hash skrip atau nonce untuk validasi tambahan.

Bagi para profesional Microsoft, perhatikan bagaimana layanan cloud menyisipkan dependensi. Aplikasi perusahaan yang kompleks sering memuat aset secara dinamis, menggunakan service worker, atau mengintegrasikan penyedia pihak ketiga. Kebijakan Anda harus menyeimbangkan antara ketat (demi keamanan) dan cukup fleksibel agar aplikasi tetap berfungsi. Kuasai dasar-dasarnya sejak awal, dan pengujian akan jauh lebih lancar di kemudian hari.

Praktik Terbaik Beralih dari Report-Only ke Mode Enforced

Langkah paling cerdas dengan CSP adalah memulai dalam mode report-only, mengumpulkan data, dan baru kemudian mengaktifkan enforcement. Jangan memperlakukan penerapan CSP sebagai daftar periksa sekali jalan. Sebaliknya, anggaplah ini sebagai proyek bertahap, di mana Anda memantau, menyesuaikan, dan secara bertahap memperkuat kebijakan agar tidak merusak fungsi bagi pengguna akhir maupun alur kerja yang kritis bagi bisnis.

Mulailah dengan menerapkan kebijakan yang luas namun masuk akal dalam mode report-only. Kumpulkan laporan pelanggaran—sebaiknya agregasikan dengan dasbor atau alat analitik untuk menyoroti pelanggar yang berulang. Cara ini membantu Anda menyaring kebisingan, menyingkirkan positif palsu, dan berfokus pada risiko sebenarnya. Jika Anda menemukan banyak laporan rutin atau berlebihan (yang lazim terjadi), sesuaikan analitik log Anda atau bahkan tulis filter skrip berdasarkan user agent atau jenis sumber daya.

Setelah volume pelanggaran menurun dan sebagian besar masalah sudah teratasi, mulailah menerapkan aturan secara bertahap sambil terus memantau kerusakan baru. Pindahkan bagian berisiko tinggi dengan lalu lintas rendah ke mode penegakan terlebih dahulu, lalu pantau. Jika berjalan lancar, perluas ke bagian proyek lainnya. Dokumentasikan perubahan dan dapatkan masukan dari pengembang dan pemangku kepentingan sepanjang proses ini—terutama pada aplikasi Microsoft 365 atau Azure yang kompleks, di mana lapisan conditional access menambah tantangan tersendiri. Untuk strategi dan rencana rollout terkait, Anda dapat membaca panduan ini tentang conditional access trust issues dan episode keamanan identitas ini.

Jangan pernah meremehkan pengujian. Gunakan alat pengembang browser, penguji status CSP, bahkan pemindaian CI/CD otomatis untuk memastikan kebijakan Anda berfungsi sebagaimana mestinya. Tujuan akhirnya? Aplikasi yang terkunci rapat, patuh terhadap regulasi, dan tangguh—dilindungi oleh kebijakan yang sudah teruji di dunia nyata, bukan sekadar harapan.

Contoh Nyata CSP dalam Mode Report-Only dan Enforced

Tidak ada yang menghidupkan CSP seperti contoh nyata. Dalam mode report-only, Anda dapat menggunakan header seperti ini: Content-Security-Policy-Report-Only: default-src 'self'; report-uri https://csp-report.example.com. Konfigurasi ini mencatat setiap pelanggaran tanpa mengganggu pengguna, sehingga sangat ideal untuk pengujian di lingkungan produksi tanpa risiko.

Berbeda dengan itu, kebijakan yang diterapkan: Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; img-src 'self'; report-uri https://csp-report.example.com. Sekarang, browser secara aktif menghentikan setiap skrip atau gambar yang tidak sesuai aturan, sehingga melindungi pengguna dari konten yang tidak disetujui secara langsung.

Dalam praktiknya, organisasi biasanya memulai dengan mode report-only untuk menemukan vendor, skrip, atau fitur bisnis mana yang akan rusak jika kebijakan penguncian diterapkan. Misalnya, portal web pemerintah mungkin menemukan skrip lama atau CDN analitik pemasaran yang terus-menerus memicu pelanggaran. Mereka melakukan iterasi, memasukkan penyedia yang aman ke daftar izin, lalu menerapkan kebijakan final secara bertahap untuk meminimalkan gangguan.

Beralih dari report-only ke mode enforced dapat mengungkap ranjau tersembunyi—terutama dengan skrip pihak ketiga atau konten dinamis. Tim sering menemukan pelanggaran “hantu” yang hanya muncul di browser tertentu atau dalam kondisi tertentu. Dengan memanfaatkan data langsung dari fase report-only, mereka menyesuaikan kebijakan hingga penegakannya tidak hanya aman, tetapi juga stabil bagi semua pihak yang terlibat.

Ringkasan Perbedaan Utama antara Mode Report-Only dan Enforced

Compliance Microsoft

Related articles

RSS