Permissions-Policy header
Which browser features — camera, microphone, geolocation — this page and anything embedded in it are allowed to use.
Modern browsers give pages access to powerful features: camera, microphone, geolocation, payment, USB, fullscreen. Permissions-Policy (formerly Feature-Policy) lists which of them the page and any frames inside it may use at all. A feature disabled by the policy cannot be requested — not by your code, not by an embedded ad, not by a script an attacker managed to inject.
How SiteScan grades it
Any Permissions-Policy header, or the older Feature-Policy, is counted as “Strong”: the header's value depends so much on what the site does that there is no universally “right” list to judge it against. No header is “Missing”. The site does not break without it, but anything embedded in it keeps the right to ask the visitor for these features.
How to set it
Disable everything you do not use:
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), usb=()
Empty parentheses mean “nobody”. To allow a feature for your own pages only, write geolocation=(self); to allow one embedded partner, add its origin: payment=(self "https://pay.example"). If an embedded map or video player stops working, check which feature it needs and allow just that one. The header joins the others in the security grade.
See this check on your own site
Run a free scan: the report shows this row for your domain along with the other checks of the site audit.
More in “Security headers”
What SiteScan checks
TLS certificate
- TLS certificate expiry
- Outdated TLS versions (TLS 1.0/1.1)
- TLS certificate chain
- TLS certificate issuer
- Certificate signature algorithm
Domain registration
- Domain registration expiry
- Registered domain name
- Domain registrar
- Domain registration date
- Domain last updated date
- Domain status codes (EPP)
- Domain transfer lock
- Registrar abuse contact
- RDAP and WHOIS data source
Indexing
- robots.txt file
- CSS and JS blocked in robots.txt
- XML sitemap
- Sitemap index file
- Off-domain URLs in the sitemap
- Sitemap lastmod dates
- Broken URLs in the sitemap
- RSS and Atom feed
Addresses & redirects
Security headers
- HTTP security headers and grade
- Strict-Transport-Security (HSTS) header
- Content-Security-Policy (CSP) header
- X-Content-Type-Options: nosniff
- X-Frame-Options and clickjacking
- Referrer-Policy header
- Permissions-Policy header
- HSTS preload list
- CORS and cross-origin reads
- HTTP TRACE method
Delivery & reputation
- Cache-Control header for HTML
- ETag and Last-Modified revalidation
- HTTP/3 and QUIC support
- Server version disclosure in headers
- DNS blocklist (DNSBL) check
Internal links
Exposure
- Exposed sensitive files (.env, .git, backups)
- Directory listing enabled
- Public JavaScript source maps
- Exposed WordPress endpoints
Well-known files
- security.txt file
- llms.txt for AI assistants
- llms-full.txt file
- ads.txt authorized sellers file
- humans.txt file
- Well-known change-password URL
DNS & email
- MX records (mail servers)
- SPF record
- DMARC record and policy
- DNSSEC signing
- CAA record
- Nameserver redundancy
- IPv6 support (AAAA record)
- MTA-STS policy
- TLS-RPT reporting record
- BIMI record (brand logo in email)
- Wildcard DNS record
- Dangling CNAME and subdomain takeover
Privacy & consent
- Analytics and tracking scripts
- Cookie consent banner
- Privacy policy link
- Terms of service link
- Imprint (Impressum)
- Accessibility statement
Core Web Vitals
- Lighthouse performance score
- Largest Contentful Paint (LCP)
- Cumulative Layout Shift (CLS)
- Interaction to Next Paint (INP)
- CrUX field data vs lab data