Cara Implementasi Content Security Policy (CSP) di Apache

Implementasi Content Security Policy (CSP) pada web server Apache dilakukan dengan menyisipkan HTTP header Content-Security-Policy menggunakan modul mod_headers. Kebijakan ini membatasi sumber daya seperti skrip, gambar, dan stylesheet yang diizinkan untuk dimuat oleh browser pada domain Anda, sehingga mitigasi terhadap serangan Cross-Site Scripting (XSS) dapat tercapai secara efektif.

Untuk menerapkan CSP di Apache, pastikan modul headers telah aktif, kemudian tambahkan direktif konfigurasi pada file httpd.conf, apache2.conf, atau di dalam file .htaccess pada direktori root website Anda.

Prasyarat & Pengaktifan Modul Apache

Sebelum memasukkan aturan CSP, pastikan modul mod_headers aktif pada server Apache Anda. Jalankan perintah berikut melalui terminal untuk sistem berbasis Debian/Ubuntu:

sudo a2enmod headers
sudo systemctl restart apache2

Contoh Konfigurasi Dasar CSP di Apache

Berikut adalah contoh implementasi header CSP dasar yang membatasi pemuatan sumber daya hanya dari domain asal (self):

<IfModule mod_headers.c>
    Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.com; object-src 'none';"
</IfModule>

Tabel Direktif Umum Content Security Policy

Direktif CSP Fungsi Utama Contoh Nilai
default-src Kebijakan fallback untuk semua jenis sumber daya yang tidak ditentukan secara spesifik. 'self' https://example.com
script-src Menentukan sumber eksekusi file JavaScript yang diizinkan. 'self' 'unsafe-inline'
style-src Menentukan sumber file CSS (stylesheet) yang diizinkan untuk dimuat. 'self' https://fonts.googleapis.com
img-src Mengontrol sumber file gambar yang valid untuk ditampilkan. 'self' data: https:
object-src Membatasi elemen seperti <object>, <embed>, dan <applet>. 'none'

Langkah Penerapan Melalui .htaccess

Jika Anda tidak memiliki akses root ke server Apache dan hanya menggunakan shared hosting, Anda dapat menuliskan aturan CSP langsung di dalam file .htaccess:

<IfModule mod_headers.c>
    Header set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:;"
</IfModule>

Mode Uji Coba: Content-Security-Policy-Report-Only

Penerapan aturan CSP yang terlalu ketat secara langsung berisiko merusak fungsionalitas situs web yang ada. Gunakan mode pelaporan terlebih dahulu untuk memantau pelanggaran tanpa memblokir konten:

<IfModule mod_headers.c>
    Header set Content-Security-Policy-Report-Only "default-src 'self'; report-uri /csp-report-endpoint;"
</IfModule>

Troubleshooting Lapangan

Jika setelah menerapkan CSP beberapa fitur website mendadak tidak berfungsi (misalnya skrip pihak ketiga atau inline script gagal dieksekusi), buka konsol browser (Developer Tools > Console). Browser akan menampilkan pesan error spesifik yang memberi tahu direktif mana yang memblokir sumber daya tersebut, sehingga Anda dapat menyesuaikan aturan pada konfigurasi Apache.