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
| Fitur | Deskripsi | Nilai Umum |
|---|---|---|
| geolocation | Akses lokasi perangkat | () atau self |
| camera | Akses kamera | () atau self |
| microphone | Akses mikrofon | () atau self |
| payment | API Pembayaran | () atau self |
| usb | Akses perangkat USB | () |
| interest-cohort | Pelacakan FLoC | () |
Langkah Implementasi
- Edit Konfigurasi: Buka file konfigurasi Nginx Anda menggunakan editor teks seperti nano atau vim.
- Tambahkan Header: Masukkan baris
add_header Permissions-Policy "..." always;di dalam blokserver. - Validasi Sintaks: Jalankan perintah
nginx -tuntuk memastikan tidak ada kesalahan penulisan. - Reload Nginx: Jika valid, jalankan
systemctl reload nginxuntuk 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).