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

Blog · Mirko Peters

Mengapa Report-Only Berbeda dari 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 arena uji 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 membahas mengapa kedua mode ini penting, apa dampaknya terhadap browser dan pengalaman pengguna, serta cara beralih dari sekadar pemantauan ke perlindungan yang sesungguhnya. Artikel ini disusun khusus untuk profesional keamanan dan pengembang yang berfokus pada Microsoft, yang ingin memastikan konfigurasi CSP mereka tepat—mencakup definisi, teknik praktis, dan praktik terbaik untuk penerapan yang aman serta 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 cara browser modern melindungi (atau sekadar mengamati) batas keamanan aplikasi web Anda. Pilihan yang Anda ambil berdampak langsung pada tingkat risiko situs, kemampuan audit, dan kelancaran penerapan Anda, 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 secara tidak sengaja merusak sesuatu bagi pengguna. 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 berjalan 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 langsung diblokir—sehingga secara instan 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 benar-benar mengaktifkannya. Anggap ini seperti roda bantu untuk keamanan aplikasi Anda, dengan garis finis di mana 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 enforcement 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. Saat Anda menggunakan header HTTP Content-Security-Policy-Report-Only, Anda memerintahkan browser untuk “mengawasi pelanggaran, tetapi jangan blokir apa pun—cukup laporkan.” Dengan begitu, Anda menerima aliran laporan pelanggaran yang dikirim ke endpoint yang 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 suatu 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, dan terkadang contoh kode yang mencurigakan.

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

Report-only juga mendukung penerapan 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 bisa jadi tersembunyi sampai enforcement memicu kegagalan besar. Selain itu, ini adalah keberhasilan dari sisi kepatuhan—Anda memiliki bukti bahwa Anda aktif memantau, yang dapat membantu saat audit ketika organisasi Anda perlu menunjukkan uji tuntas.

Bagaimana Mode Enforced Meningkatkan Keamanan

Mode enforced adalah tahap ketika kebijakan CSP Anda tidak lagi sekadar saran, melainkan menjadi aturan. Saat Anda menggunakan header Content-Security-Policy, browser benar-benar memblokir konten apa pun yang tidak sesuai dengan direktif Anda. Tidak ada sekadar peringatan, langsung ditindak.

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 tepat. 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 tahap ketika kebijakan CSP Anda benar-benar bertaring sekaligus memiliki "mata" untuk mengawasi. CSP memungkinkan Anda menentukan satu atau lebih endpoint (menggunakan report-uri atau report-to) tempat browser mengirimkan laporan pelanggaran. Ketika pelanggaran terjadi, browser mengemas detail seperti sumber daya mana yang diblokir dan kebijakan mana yang gagal ke dalam pesan JSON atau HTTP POST, lalu mengirimkannya ke endpoint Anda.

Direktif report-uri adalah metode lama: Anda menetapkan sebuah URL, dan browser mengirim laporan langsung ke sana. Namun, untuk fleksibilitas modern dan pelaporan yang lebih kaya, report-to adalah opsi yang lebih baru dan lebih tangguh, 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, terapkan kontrol akses, dan pantau lonjakan yang tidak biasa (yang bisa menandakan serangan atau kebijakan yang rusak). Jangan lupakan privasi: laporan dapat berisi 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 sebenarnya ada pada visibilitas. Dengan pelaporan yang dikonfigurasi dengan benar, Anda mendapatkan aliran data langsung tentang di mana kebijakan Anda menangkap pelanggaran, sehingga Anda dapat menyesuaikan, menyetel, dan akhirnya beralih ke penerapan secara aman tanpa kejutan. Tingkat pemantauan ini sangat penting, baik Anda mengelola satu aplikasi maupun lingkungan Microsoft 365 yang luas.

Memahami Sintaks dan Direktif CSP untuk Desain Kebijakan yang Efektif

Menulis header CSP yang solid memang bukan hal yang rumit, tetapi tetap membutuhkan ketelitian, terutama saat menangani aplikasi kompleks dan integrasi layanan cloud Microsoft. Pada dasarnya, kebijakan CSP adalah daftar terstruktur berisi direktif, 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 ditulis dalam bentuk string berisi aturan yang dipisahkan titik koma.

Inti 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, memungkinkan Anda mengontrol secara ketat sumber tepercaya (misalnya domain Anda, CDN tepercaya, dan mungkin juga 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 memerlukan 'unsafe-inline', tetapi berhati-hatilah karena 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. Pastikan dasar-dasarnya benar 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 penerapan. Jangan memperlakukan penerapan CSP sebagai daftar periksa sekali jalan. Sebaliknya, pendekatkan sebagai proyek bertahap, di mana Anda memantau, menyesuaikan, dan secara bertahap memperkuat kebijakan agar tidak merusak fungsi bagi pengguna akhir atau alur kerja yang kritis bagi bisnis.

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

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

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

Contoh Nyata CSP dalam Mode Hanya-Laporan dan Mode Penegakan

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

Bandingkan dengan 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 hanya-laporan untuk mengungkap vendor, skrip, atau fitur bisnis mana yang akan rusak jika diterapkan penguncian penuh. Misalnya, portal web pemerintah mungkin menemukan skrip lama atau CDN analitik pemasaran yang terus-menerus memicu pelanggaran. Mereka lalu melakukan iterasi, memasukkan penyedia yang aman ke daftar izin, dan menerapkan kebijakan final secara bertahap untuk meminimalkan gangguan.

Beralih dari mode hanya-laporan ke mode penegakan 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 hanya-laporan, mereka menyesuaikan kebijakan hingga penegakannya tidak hanya aman, tetapi juga stabil bagi semua pihak yang terlibat.

Ringkasan Perbedaan Utama antara Mode Hanya-Laporan dan Mode Penegakan

Compliance Microsoft

Related articles

RSS