O que faz
O cabeçalho HTTP Permissions-Policy diz ao navegador quais recursos poderosos da web a sua página — e cada iframe que você incorpora — pode usar. Câmera, microfone, geolocalização, sensores, USB, compartilhamento de tela: por padrão, cada um deles está disponível para a sua própria origem, à espera de um script pedir.
Esta ferramenta transforma esse cabeçalho de uma string digitada à mão em um editor estruturado de diretivas. Cada cartão de diretiva nomeia um recurso — recursos conhecidos carregam um selo de impacto na privacidade (alto / médio / baixo) e uma nota sobre o que o recurso faz — e escolhe uma allowlist: permitir em todo lugar (*), só mesma origem (self), desativado por completo (()), ou uma lista de origens personalizada. O cabeçalho se monta sozinho, ao vivo, ao lado dos controles. Cole um cabeçalho existente para carregá-lo e editá-lo.
Como usar
- Comece por um preset — All deny (todo recurso do catálogo desativado), Camera self (
camera=(self)), ou Fullscreen * (fullscreen=*). - Edite os cartões de diretiva — digite um nome de recurso, escolha a allowlist (
Off/Self/All/Origins) e, paraOrigins, informe uma lista de origens separada por espaços. Adicione ou remova diretivas livremente. - Cole um cabeçalho existente — expanda o painel de importação, cole o valor atual do seu
Permissions-Policye Parse & load o traz para o editor (o prefixo do nome do cabeçalho e as origens entre aspas são tratados; entrada malformada é reportada). - Copie ou baixe — copie o cabeçalho para a configuração do seu servidor / CDN, ou baixe como
permissions-policy.txt. - Compartilhe a configuração — sua lista inteira de diretivas é codificada na URL da página; copie o endereço para entregar a alguém a política exata.
Exemplos
Um padrão estrito para um site que não precisa de nenhuma dessas APIs:
camera=(), display-capture=(), geolocation=(), hid=(), idle-detection=(),
microphone=(), serial=(), usb=(), xr-spatial-tracking=()
Incorporando um parceiro de vídeo que precisa de câmera + microfone apenas no próprio frame:
camera=(https://partner.example.com), geolocation=(), microphone=(https://partner.example.com)
Mantendo fullscreen e payment para você mesmo, todo o resto travado:
fullscreen=(self), payment=(self)
Bom saber
- Validação ao vivo — a ferramenta sinaliza diretivas duplicadas (só a última sobrevive no cabeçalho),
*no trio sensível (camera,geolocation,microphone— toda origem recebe o prompt de hardware) e nomes fora do catálogo (erro de digitação, ou um recurso que os navegadores ainda não conhecem — ignorado silenciosamente). - Por que travar recursos que você nunca usa? Um recurso desativado não pode ser reativado por uma dependência comprometida, um script de anúncio malicioso ou um iframe injetado. Também encolhe sua superfície de fingerprinting — APIs de sensor e de bateria são vetores clássicos de rastreamento.
- Feature detection continua funcionando. Scripts que chamam
navigator.mediaDevicesnum recurso desativado recebem uma promise rejeitada em vez de um prompt — configureallow="camera"apenas nos iframes específicos que precisam dele. - Isto não é CSP. Content-Security-Policy controla qual conteúdo carrega; Permissions-Policy controla quais hardware/APIs podem ser usados. Use os dois.
- 100% no cliente — o cabeçalho é construído no seu navegador; nada é enviado.
- Ferramentas relacionadas: CSP Builder, Basic Auth Generator.