Generator Content Security Policy (CSP) Online
Buat header Content-Security-Policy, tag meta, dan versi Report-Only dengan preset, nonce, dan hash SHA-256, lalu audit kebijakan yang sudah ada.
Mulai dari preset
Host Google di sini hanyalah contoh yang diambil dari panduan CSP Google untuk tag Google. Google mengubahnya dari waktu ke waktu: periksa dokumentasi terbaru dan hapus yang tidak Anda gunakan.
Pada tag <meta>, browser mengabaikan frame-ancestors, report-uri, report-to, dan sandbox, serta Report-Only tidak didukung. Letakkan tag di bagian atas <head>: tag hanya berlaku untuk konten yang muncul setelahnya.
Tinjauan kebijakan ini
Pemeriksaan ini tidak menemukan kelemahan.
Evaluasi kebijakan yang sudah ada
Cara membuat kebijakan CSP
- Pilih titik awal di Mulai dari preset: Ketat (nonce + strict-dynamic), Situs statis yang dikunci ketat, Situs web umum, atau Umum + Google Analytics / Ads. Editor terbuka dengan preset situs web umum.
- Sesuaikan Direktif. Setiap kolom menerima sumber yang dipisahkan spasi; kolom kosong berarti direktif tersebut dihilangkan.
- Gunakan Tambah cepat untuk menambahkan kata kunci ke Direktif yang dipilih:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Tambahkan nonce menyisipkan nonce acak 128-bit. - Untuk mengizinkan satu skrip inline tertentu tanpa
'unsafe-inline', tempel skrip itu (atau HTML di sekitarnya) di Hash skrip atau gaya inline, lalu klik Hitung SHA-256 dan tambahkan. - Centang upgrade-insecure-requests jika masih ada URL lama yang memakai
http://, dan jika perlu isi URL endpoint laporan (opsional). - Salin Header HTTP, Header Report-Only (uji tanpa memblokir), atau Tag HTML. Tinjauan kebijakan ini diperbarui saat Anda mengetik.
Untuk mengaudit kebijakan yang sudah Anda miliki, tempel di Evaluasi kebijakan yang sudah ada dan klik Evaluasi kebijakan; Muat ke editor menyalinnya ke kolom-kolom di atas. Semuanya berjalan di browser Anda: kebijakan yang Anda masukkan tidak dikirim ke server.
Fungsi Content Security Policy
CSP memberi tahu browser dari asal (origin) mana saja sebuah halaman boleh memuat skrip, gaya, gambar, font, frame, dan koneksi. Tugas utamanya adalah membatasi cross-site scripting (XSS): meskipun penyerang berhasil menyisipkan markup ke halaman Anda, kebijakan yang baik mencegah skrip sisipan itu berjalan. CSP juga mengatur siapa yang boleh menyematkan halaman Anda (frame-ancestors), ke mana formulir boleh dikirim (form-action), dan ke mana <base> boleh menunjuk (base-uri).
Direktif fetch seperti img-src atau font-src beralih ke default-src bila tidak ditentukan. Sebaliknya, base-uri, form-action, dan frame-ancestors tidak memiliki cadangan seperti itu, itulah sebabnya tinjauan meminta Anda mengisinya secara eksplisit.
Nonce, hash, dan strict-dynamic
Mengizinkan host tertentu (script-src https://cdn.example.com) tampak aman, tetapi sering bisa dilewati: domain besar menyediakan endpoint JSONP dan pustaka lama yang dapat dimanfaatkan penyerang. Pendekatan yang direkomendasikan tim keamanan browser adalah CSP ketat: setiap <script> yang sah membawa nonce yang dibuat server untuk setiap respons, atau diizinkan lewat hash-nya, dan 'strict-dynamic' membiarkan skrip tepercaya itu memuat skrip lain yang dibutuhkannya. Dalam pengaturan ini, https: dan 'unsafe-inline' hanya menjadi cadangan untuk browser yang sangat lama; browser modern mengabaikannya.
Nonce hanya berfungsi jika berubah di setiap respons dan tidak dapat ditebak. Nonce yang disisipkan oleh Tambahkan nonce hanyalah contoh: server atau framework Anda harus membuat nonce sendiri. Hash mencakup byte persis dari kode inline, sehingga memformat ulang skrip berarti memerlukan hash baru.
Header, Report-Only, dan tag meta
Kirim kebijakan sebagai header respons HTTP bila memungkinkan. Terapkan dulu sebagai Content-Security-Policy-Report-Only: browser melaporkan pelanggaran (ke konsol, dan ke endpoint Anda jika diatur) tanpa memblokir apa pun, sehingga Anda dapat memperbaiki halaman sebelum kebijakan diberlakukan. Pengaturan laporan menambahkan report-uri untuk browser lama dan report-to dengan header Reporting-Endpoints.
Versi <meta http-equiv> praktis untuk hosting statis, tetapi browser mengabaikan frame-ancestors, report-uri, report-to, dan sandbox di dalamnya, dan tidak ada tag meta Report-Only. Alat ini menghapus direktif tersebut dari tag dan memberi tahu Anda.
Apa yang diperiksa alat ini
Tinjauan kebijakan ini menandai masalah dengan tingkat keparahan Tinggi, Sedang, Rendah, atau Info: 'unsafe-inline' dan 'unsafe-eval' di script-src, wildcard dan skema seperti https: atau data: pada sumber skrip, object-src, base-uri, frame-ancestors, dan form-action yang hilang, direktif yang salah eja atau sudah usang, serta kata kunci yang lupa diberi tanda kutip tunggal. Pemeriksaan ini membantu menemukan kesalahan umum, tetapi bukan jaminan keamanan: uji kebijakan Anda di browser yang sebenarnya, dan mulailah dengan mode Report-Only.
Pertanyaan yang sering diajukan
Apakah 'unsafe-inline' di style-src menjadi masalah?
Risikonya lebih kecil daripada di script-src dan sangat umum, karena banyak pustaka menetapkan gaya inline. CSS yang disisipkan tetap bisa merusak tampilan halaman atau membocorkan data, sehingga tinjauan mencantumkannya dengan tingkat keparahan rendah.
Apakah daftar host Google Analytics sudah lengkap?
Daftar itu hanya contoh dari panduan CSP Google untuk tag Google. Google menyesuaikannya dari waktu ke waktu dan domain regional mungkin diperlukan; periksa dokumentasi Google terbaru dan hapus yang tidak Anda gunakan. Snippet inline gtag.js juga memerlukan nonce atau hash.
Mengapa kebijakan saya memblokir skrip inline milik saya sendiri?
Begitu script-src diatur tanpa 'unsafe-inline', setiap <script> inline dan atribut onclick= diblokir. Pindahkan kodenya ke file, atau tambahkan nonce atau hash.
Apakah CSP menggantikan escaping input pengguna?
Tidak. CSP adalah lapisan pertahanan kedua. Tetaplah melakukan escaping pada output dan validasi pada input; kebijakan ini membatasi kerusakan ketika ada yang lolos.
Bolehkah memiliki beberapa kebijakan sekaligus?
Boleh: jika sebuah halaman menerima beberapa header CSP, sumber daya harus memenuhi semuanya. Tempel satu kebijakan pada satu waktu ke evaluator.
Alat terkait
- Generator Redirect .htaccess Online Buat redirect 301 dan 302 untuk .htaccess atau Nginx, paksa HTTPS dan www, pindahkan domain, rapikan garis miring, plus cek loop dan rantai redirect.
- Generator Meta Tag SEO Online Generator meta tag gratis untuk title, meta description, URL kanonis, robots, dan viewport, dengan cek panjang karakter dan HTML yang di-escape dengan benar.
- Generator Hash Buat hash MD5, SHA-1, SHA-256, dan SHA-512 dari teks atau file berukuran berapa pun, dan verifikasi checksum. Semuanya berjalan di browser Anda.
- Generator Robots.txt Online Buat file robots.txt yang valid dengan grup user-agent, aturan Allow dan Disallow, sitemap, dan crawl-delay, lengkap dengan cek kesalahan umum.