Menerapkan Content Security Policy (CSP) di NGINX

calendar_today
schedule 2 min read

Menerapkan Content Security Policy (CSP) di NGINX

Apa Itu Content Security Policy (CSP)?

Content Security Policy (CSP) adalah lapisan keamanan tambahan yang membantu mendeteksi dan mengurangi serangan seperti Cross-Site Scripting (XSS) dan injeksi data. Dengan CSP, kamu bisa menentukan sumber daya mana yang boleh dimuat oleh browser, seperti skrip, gambar, atau font. Ini membantu mencegah eksekusi kode berbahaya di situs web kamu.

Kenapa Harus Pakai CSP di NGINX?

NGINX adalah salah satu web server paling populer di dunia. Dengan menerapkan CSP di NGINX, kamu bisa meningkatkan keamanan situs web kamu dengan mudah. Selain itu, CSP juga membantu melindungi pengguna dari serangan yang mungkin terjadi karena kerentanan di sisi klien.

Cara Menerapkan CSP di NGINX

Berikut adalah langkah-langkah untuk menerapkan CSP di NGINX:

  1. Buka File Konfigurasi NGINX

    Pertama, kamu perlu membuka file konfigurasi NGINX. Biasanya, file ini berada di /etc/nginx/nginx.conf atau /etc/nginx/sites-available/default. Kamu bisa menggunakan editor teks favoritmu, seperti nano atau vim.

    code
    sudo nano /etc/nginx/sites-available/default
  2. Tambahkan Header CSP

    Di dalam blok server atau location, tambahkan header CSP. Berikut adalah contoh sederhana:

    code
    server {
        listen 80;
        server_name example.com;
    
        add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.example.com; img-src 'self' data: https://images.example.com; style-src 'self' 'unsafe-inline' https://styles.example.com; font-src 'self' https://fonts.example.com;";
    }

    Penjelasan:

    • default-src 'self': Hanya izinkan sumber daya dari domain yang sama.
    • script-src: Izinkan skrip dari domain yang sama, unsafe-inline (skrip inline), unsafe-eval (fungsi eval), dan dari https://cdn.example.com.
    • img-src: Izinkan gambar dari domain yang sama, data: (URI data), dan dari https://images.example.com.
    • style-src: Izinkan gaya dari domain yang sama, unsafe-inline (gaya inline), dan dari https://styles.example.com.
    • font-src: Izinkan font dari domain yang sama dan dari https://fonts.example.com.
  3. Uji Konfigurasi NGINX

    Sebelum menerapkan perubahan, pastikan konfigurasi NGINX benar dengan perintah:

    code
    sudo nginx -t

    Jika tidak ada error, restart NGINX:

    code
    sudo systemctl restart nginx
  4. Verifikasi CSP

    Setelah menerapkan CSP, kamu bisa memverifikasi apakah header CSP sudah terpasang dengan benar. Kamu bisa menggunakan alat seperti SecurityHeaders.com atau CSP Evaluator untuk memeriksa konfigurasi CSP kamu.

Tips untuk CSP yang Lebih Aman

  • Hindari menggunakan unsafe-inline dan unsafe-eval jika memungkinkan. Gunakan nonce atau hash untuk mengizinkan skrip atau gaya inline yang aman.
  • Batasi sumber daya eksternal hanya ke domain yang kamu percayai.
  • Gunakan report-uri atau report-to untuk menerima laporan pelanggaran CSP. Ini membantu kamu memahami dan memperbaiki masalah keamanan.

Dengan menerapkan CSP di NGINX, kamu bisa meningkatkan keamanan situs web kamu dan melindungi pengguna dari serangan yang mungkin terjadi. Selamat mencoba!

A

Written by Ariful

Full-stack engineer obsessed with web performance.