Build a Permissions-Policy header that constrains the third-party code you did not write.
Comma-separated feature names. Everything else in the list is denied outright.
11 features denied, 1 allowed for your own origin
An empty allowlist — the `()` form — denies a feature to your own page and to everything embedded in it. That second part is the reason to set this header at all: it constrains scripts and iframes you did not write and cannot audit, so an advertising frame cannot ask for the camera even if it tries. `(self)` allows your own origin only. Features not named in the header keep the browser default, which for most is "allowed for self", so listing everything you want denied is deliberate rather than redundant. Setting this header cannot break a feature you were not already using — but it will break one you were, which is why it is worth deploying with the report-only cousin first where your stack supports it.
What this cannot tell you
Take this with you
Permissions-Policy Builder on RunTheTests — free browser-based websec tools, no sign-up.