Security
Camera, microphone and location access are restricted
security.missing-permissions-policy
Why this matters
Anything embedded in your pages — an advert, a chat widget, a map — can ask the visitor for access to their camera, microphone or location, and the request appears to come from you.
Who fixes it
You can, usually
Roughly how long
Minutes
Care needed
Low risk to change
How to fix it
Send `Permissions-Policy: camera=(), microphone=(), geolocation=()`, listing only what your site genuinely uses.
On your platform
WordPress
Set where your other headers are set — Cloudflare, or `.htaccess` on Apache hosting — rather than in WordPress. Before adding it, check whether a plugin genuinely needs one of these: a store locator wants `geolocation`, and a video or booking widget may want `camera` and `microphone`. List what is actually used and switch the rest off.
Shopify
Not available to merchants; Shopify controls storefront headers. If an app on your shop is asking visitors for camera, microphone or location, the thing to review is the app rather than the header.
Drupal
No module setting for this one, so it is a web server or CDN change. If you set the other headers through Security Kit, this is the one that still needs your host.
Joomla
The System – HTTP Headers plugin covers this alongside the others in Joomla 4 and 5. Check which capabilities your extensions actually use before switching them all off.
How we score it
Failing this check takes up to 4 points off your security score. It is a fact about your site rather than a measurement, so it reads the same on every scan until you change something.
Does your site pass this one?
This check runs on every scan, along with the other 106. Free, no account, and you see the evidence for each result.
Check my siteOther security checks
- A content security policy is in placeA content security policy tells the browser which scripts it may run. Without one, anything that manages to get injected into a page — through a compromised plugin, a hijacked advert, or a comment field — runs with the same trust as your own code.
- Browsers are told to stay on HTTPSYour site works over HTTPS, but it never tells browsers to remember that. The very first visit of the day can still be sent over an insecure connection before the redirect happens, which is the window an attacker on shared Wi-Fi needs.
- Cookies are only sent over an encrypted connectionA cookie without the Secure flag is sent over a plain, unencrypted connection as readily as over an encrypted one. Anyone sharing a network with the visitor — a café, a hotel, an office guest network — can read it, and a single request to the http version of the site is enough to expose it, even when every page normally redirects to https. The flag costs nothing and there is no reason for a cookie on a secure site to be missing it.
- File types cannot be second-guessedWithout this header a browser may ignore what your server says a file is and guess instead. An uploaded image that is secretly a script can then be run as one.
- Folders are not browsableYour server is showing a file listing instead of a page. Anyone can read it and see exactly what is in that folder — backups, spreadsheets, database dumps, anything left there and forgotten.
- Login cookies are hidden from scripts on the pageA session cookie marked HttpOnly can be sent to the server but cannot be read by JavaScript running on the page. Without that flag, any script that ends up on the site — through a compromised plugin, a hijacked advert, or a comment field that did not escape its input — can read a logged-in session and use it from somewhere else. It is the difference between a script injection being an embarrassment and being an account takeover.