Cara Konfigurasi Permissions-Policy di Nginx (Panduan Teknis)

Implementasi Header Permissions-Policy pada Nginx

Header Permissions-Policy (sebelumnya dikenal sebagai Feature-Policy) adalah mekanisme keamanan yang memungkinkan pengembang situs web untuk mengontrol fitur browser mana yang dapat diakses oleh halaman web tersebut dan iframe di dalamnya. Dengan mengonfigurasi header ini di Nginx, Anda dapat membatasi akses ke API sensitif seperti kamera, mikrofon, geolokasi, atau sensor gerak, sehingga mengurangi risiko eksploitasi keamanan.

Untuk menerapkan header ini, Anda perlu memodifikasi file konfigurasi Nginx (biasanya di /etc/nginx/nginx.conf atau file konfigurasi server block spesifik Anda) menggunakan direktif add_header.

Sintaks Dasar Konfigurasi

Berikut adalah contoh konfigurasi untuk menonaktifkan fitur yang tidak diperlukan guna memperketat keamanan situs Anda:

server {
    listen 443 ssl;
    server_name example.com;

    # Menambahkan header Permissions-Policy
    add_header Permissions-Policy "geolocation=(), camera=(), microphone=(), interest-cohort=()" always;

    location / {
        # Konfigurasi lainnya
    }
}

Tabel Referensi Direktif Permissions-Policy

FiturDeskripsiNilai Umum
geolocationAkses lokasi perangkat() atau self
cameraAkses kamera() atau self
microphoneAkses mikrofon() atau self
paymentAPI Pembayaran() atau self
usbAkses perangkat USB()
interest-cohortPelacakan FLoC()

Langkah Implementasi

  1. Edit Konfigurasi: Buka file konfigurasi Nginx Anda menggunakan editor teks seperti nano atau vim.
  2. Tambahkan Header: Masukkan baris add_header Permissions-Policy "..." always; di dalam blok server.
  3. Validasi Sintaks: Jalankan perintah nginx -t untuk memastikan tidak ada kesalahan penulisan.
  4. Reload Nginx: Jika valid, jalankan systemctl reload nginx untuk menerapkan perubahan tanpa memutus koneksi aktif.

Tips Troubleshooting

Jika fitur di situs Anda berhenti berfungsi setelah menambahkan header, periksa konsol browser (F12 > Console). Browser akan memberikan pesan kesalahan spesifik jika akses ke API diblokir oleh kebijakan yang Anda tetapkan. Pastikan untuk memberikan akses self jika situs Anda memang membutuhkan fitur tersebut (misalnya, situs konferensi video memerlukan camera=self).