Browser modern menyediakan banyak kemampuan yang membuat website terasa seperti aplikasi: kamera, mikrofon, geolokasi, pemutaran otomatis, layar penuh, sensor perangkat, hingga akses ke beberapa fitur jaringan. Namun, tidak setiap halaman atau konten pihak ketiga perlu memakai semua kemampuan tersebut. Permissions Policy membantu pemilik website membatasi fitur browser yang boleh digunakan oleh dokumen dan frame yang tertanam di dalamnya.
Kebijakan ini berguna sebagai lapisan pembatas tambahan, terutama pada website yang menyematkan video, peta, formulir, widget analitik, atau konten dari layanan eksternal. Pengaturannya perlu disesuaikan dengan fungsi situs; kebijakan yang terlalu ketat dapat membuat fitur yang sah berhenti bekerja.
Apa itu Permissions Policy?
Permissions Policy adalah mekanisme platform web untuk mengizinkan atau menolak penggunaan fitur browser tertentu pada sebuah dokumen. Kebijakan dapat dikirim melalui header HTTP Permissions-Policy, dan sebagian pengaturan juga dapat diterapkan secara lebih spesifik pada elemen iframe menggunakan atribut allow.
Contohnya, halaman artikel biasa mungkin tidak membutuhkan kamera atau mikrofon. Pemilik situs dapat menonaktifkan kedua fitur itu untuk dokumen tersebut. Sebaliknya, halaman konferensi video bisa membutuhkan mikrofon dan kamera, sehingga kebijakannya harus dirancang sesuai kebutuhan dan diuji bersama mekanisme izin browser.
Bedanya dengan izin browser dan Content Security Policy
Permissions Policy bukan pengganti dialog izin yang ditampilkan browser. Dialog izin tetap berkaitan dengan persetujuan pengguna, sedangkan policy menentukan apakah dokumen diizinkan menggunakan fitur tertentu sejak awal. Jika fitur diblokir oleh kebijakan, persetujuan pengguna saja tidak akan membuatnya tersedia.
Kebijakan ini juga berbeda dari Content Security Policy (CSP). CSP terutama mengatur sumber daya yang boleh dimuat atau dijalankan, seperti skrip, stylesheet, dan koneksi. Permissions Policy mengatur penggunaan kemampuan browser tertentu. Keduanya dapat saling melengkapi, tetapi tidak saling menggantikan.
Contoh header yang bisa dijadikan titik awal
Untuk halaman yang tidak membutuhkan kamera, mikrofon, atau lokasi, contoh sederhana berikut dapat dipertimbangkan:
Permissions-Policy: camera=(), microphone=(), geolocation=()Tanda kurung kosong berarti fitur tersebut tidak diizinkan untuk dokumen maupun konteks turunan yang tercakup oleh kebijakan. Jika fitur geolokasi memang dibutuhkan pada halaman dari origin sendiri, contoh lain adalah:
Permissions-Policy: geolocation=(self), camera=(), microphone=()self membatasi izin pada origin yang sama. Sintaks dan dukungan tiap direktif dapat berbeda menurut browser, jadi periksa dokumentasi terbaru sebelum menerapkan konfigurasi produksi. Jangan menyalin contoh ini secara membabi buta ke website yang memiliki fitur panggilan video, pemetaan, atau unggah media melalui kamera.
Mengatur fitur untuk iframe pihak ketiga
Header membantu menetapkan batas untuk dokumen secara keseluruhan. Jika website menyematkan layanan eksternal, atribut allow pada iframe dapat memberikan izin yang dibutuhkan frame itu, misalnya untuk layar penuh. Namun, atribut tersebut bukan jalan pintas untuk melewati kebijakan yang lebih ketat dari dokumen induk.
Prinsip yang aman adalah memberi izin seminimal mungkin. Sebuah iframe video mungkin hanya membutuhkan pemutaran media dan layar penuh, sedangkan widget komentar tidak semestinya mendapat akses kamera atau geolokasi tanpa alasan. Tinjau daftar embed yang digunakan dan dokumentasi resmi penyedianya sebelum membatasi fitur, karena integrasi yang berbeda bisa memiliki kebutuhan berbeda.
Langkah penerapan yang lebih aman
- Inventarisasi fitur. Catat halaman yang memakai kamera, mikrofon, lokasi, autoplay, layar penuh, atau API lain yang tercakup oleh Permissions Policy.
- Mulai dari kebutuhan nyata. Nonaktifkan fitur yang jelas tidak digunakan, lalu buat pengecualian terbatas untuk halaman atau origin yang memang membutuhkannya.
- Uji di lingkungan staging. Periksa alur utama di browser yang didukung situs, termasuk formulir, video, peta, login, dan widget pihak ketiga.
- Periksa header respons. Gunakan panel Network pada Developer Tools untuk melihat apakah respons benar-benar mengirim header yang diharapkan. Pastikan konfigurasi reverse proxy, CDN, dan server origin tidak saling menimpa.
- Catat dan pantau masalah. Setelah perubahan, periksa konsol browser dan laporan dukungan pengguna. Jika ada fitur gagal, tentukan apakah penyebabnya policy, izin pengguna, atau masalah integrasi lain sebelum melonggarkan aturan.
Kesalahan yang perlu dihindari
Kesalahan umum adalah menerapkan satu header ketat ke seluruh situs tanpa menguji halaman khusus. Dampaknya bisa berupa tombol konferensi yang tidak berfungsi, peta yang kehilangan akses lokasi, atau embed yang tidak dapat menggunakan fitur yang dibutuhkan. Kesalahan lain adalah menganggap header ini otomatis membuat situs aman. Ia tidak mencegah seluruh serangan, tidak menggantikan validasi input, kontrol akses, CSP, atau pembaruan perangkat lunak.
Perhatikan pula bahwa daftar direktif dan dukungan browser terus berkembang. Gunakan nama fitur yang sesuai dengan spesifikasi saat ini; header lama Feature-Policy sudah digantikan oleh Permissions-Policy. Hindari memasukkan direktif yang tidak didukung tanpa memahami bagaimana browser menangani aturan tersebut.
Checklist sebelum digunakan di produksi
- Setiap fitur yang diizinkan memiliki alasan bisnis atau teknis yang jelas.
- Origin pihak ketiga hanya mendapat akses yang benar-benar diperlukan.
- Halaman penting telah diuji di browser yang digunakan pengunjung.
- Header diperiksa dari respons aktual, bukan hanya dari konfigurasi panel hosting.
- Perubahan dapat dibatalkan dengan cepat jika menyebabkan gangguan.
Kesimpulan
Permissions Policy membantu memperkecil kemampuan browser yang tersedia bagi sebuah halaman dan konten tertanamnya. Manfaat terbaik diperoleh melalui pendekatan bertahap: petakan fitur, terapkan aturan minimal, uji integrasi, lalu verifikasi header pada respons nyata. Gunakan kebijakan ini sebagai salah satu lapisan pertahanan bersama CSP, izin pengguna, dan praktik pengembangan web yang aman—bukan sebagai pengganti semuanya.
Referensi: Dokumentasi Permissions-Policy di MDN dan spesifikasi Permissions Policy dari W3C.
PENGALAMAN BARU Coba tampilan baru Penasaran dengan pengalaman membaca Nazuaf versi modern? Coba tampilan baru yang dirancang agar nyaman dibaca dari ponsel dan pc. Buka versi modern dan lanjutkan membaca artikel ini. Jelajahi tampilan baru Nazuaf versi modern · Ketuk kartu untuk mencoba