O que é o Feature Policy?
O Feature Policy trata-se de um CSP (Content Security Policy), porém voltado para os recursos do navegador. Atualmente, os navegadores possuem inúmeros recursos que podem ser utilizados no seu site, por exemplo, solicitações de pagamentos, notificações, vibração, acelerômetro, geolocalização e até mesmo acesso a periféricos como USB, câmera e microfone do seu aparelho, e o Feature Policy, permite a liberação ou restrição desses recursos em seu site.
Mas afinal, por que liberar ou restringir recursos em meu site?
Confira abaixo os motivos para você liberar ou restringir recursos em seu site:
- Segurança/Privacidade: o Feature Policy permite a restrição de recursos, se o seu site não utiliza alguns deles, por exemplo, o WebUSB API ou o WebBluetooth API, não há a necessidade de mantê-los ativos. Sendo assim, o desligamento desses recursos poderá reduzir possíveis ataques que utilizem esses recursos ao seu site.
- Usabilidade: seu site pode utilizar recursos de terceiros, e para que esses recursos possam ser utilizados em sua totalidade, pode ser necessária a liberação de alguns periféricos como a câmera e microfones, por exemplo. Por outro lado, também pode ser utilizado para bloquear alguns recursos como Vibration API, que se utilizado por pessoas mal intencionadas podem frustrar a experiência do usuário.
Confira abaixo alguns exemplos de recursos correspondentes as informações acima:
- Segurança/Privacidade: Geolocation, WebUSB, Camera, Microphone.
- Usabilidade: Vibrate, Autoplay, Fullscreen, Geolocation, Camera, Microphone.
Reforçamos que esses são alguns exemplos de uso, mas tudo depende da particularidade de cada negócio.
Como configurar o Feature Policy na plataforma
Para configurar o Feature Policy na plataforma para que ele seja refletido em seu site, acesse o menu Configurações >> Configurações Gerais e buscar pela configuração "Feature-Policy".
Ressaltamos que o formato deve ser inserido desta maneira:
Feature-Policy: <recurso> <origem>
Os recursos podem ser:
- accelerometer
- ambient-light-sensor
- autoplay
- camera
- encrypted-media
- fullscreen
- geolocation
- gyroscope
- magnetometer
- microfone
- midi
- payment
- picture-in-picture
- speaker
- usb
- vr
A origem pode ser:
- * : permite o <recurso> em todo o site, incluindo iframes e conteúdos de terceiros;
- https://exemplo.com.br: permite o <recurso> para todos os sites informados;
- ‘self’: permite o <recurso> na página que tenha a mesma origem do site que está sendo navegado, com isso terceiros não podem usar tal <recurso>;
- ‘none’: desabilita o recurso.
A configuração permite a inserção de mais de um recurso, para isso basta separar com ponto e vírgula, confira o exemplo abaixo:
Feature-Policy: microfone ‘self’; usermedia *; sync-xhr ‘none’; câmera ‘self’; paymente https://example.com ; usb ‘none’