Permissions-Policy 헤더 빌더
Permissions-Policy 헤더는 Feature-Policy의 현대적 대체: 페이지와 iframe이 어떤 기능 사용 허용되는지 브라우저에 지시. 각 기능 하나씩 선택 + 완전 차단·동일 오리진만·모든 오리진·커스텀 리스트 한정 선택. 잘 알려진 기능(camera·microphone·geolocation·payment·USB 등)을 카테고리별 태그 → 물리는 거 놓치지 않게. 경고는 안전하지 않은 기본값 잡음 — 모든 임베디드 오리진에 기능 넘기는 와일드카드, 스킴 없는 커스텀 리스트.
- accelerometer가속도계 읽기
- gyroscope자이로스코프 읽기
- magnetometer자기계 읽기
- ambient-light-sensor주변광 읽기
- camera사용자 카메라 사용
- microphone사용자 마이크 사용
- autoplay미디어 자동재생
- display-capturegetDisplayMedia로 스크린쉐어
- speaker-selection출력 오디오 장치 선택
- paymentPayment Request API 사용
- publickey-credentials-getWebAuthn 사용
- fullscreen프로그램으로 전체화면 진입
- picture-in-picturePIP 비디오 열기
- screen-wake-lock화면 깨어 있게 유지
- xr-spatial-trackingWebXR 공간 추적 사용
- geolocation사용자 위치 읽기
- clipboard-read클립보드 내용 읽기
- clipboard-write클립보드에 쓰기
- usbWeb USB 사용
- serialWeb Serial 사용
- bluetoothWeb Bluetooth 사용
- idle-detection사용자 유휴 감지
- midiWeb MIDI 사용
- web-shareWeb Share API 사용
Permissions-Policy: autoplay=(self), fullscreen=(self), picture-in-picture=(self), clipboard-write=(self), web-share=(self)모든 HTML 응답에 적용. 브라우저가 위반을 컬렉터로 보내길 원하면 Report-To + `report-uri` 디렉티브(여기선 빌드 안 함) 사용.
사용법
- strict 프리셋(전부 끔)부터 시작해 페이지가 실제 필요한 것만 켜기.
- 대부분 페이지 레벨 기능엔 `self`가 정답. `*`는 거의 정답 아님 — 모든 iframe에 기능 허용.
- 커스텀 모드는 오리진 허용 리스트(`https://embed.example.com https://other.com`). `self`·`*`는 토큰, 나머진 전체 오리진 필요.
자주 묻는 질문
- Permissions-Policy vs Feature-Policy?
- 동일 아이디어, 새 문법. Feature-Policy는 디렉티브당 공백 구분 오리진 리스트 사용; Permissions-Policy는 구조화 헤더 `feature=(origin1 origin2)` 사용. 브라우저는 이제 Permissions-Policy 존중; 구식 브라우저 지원 시 전환 윈도우에 둘 다 제공.
- 와일드카드 `*` 위험?
- 와일드카드는 모든 중첩 iframe에 기능 넘김 — 완전 신뢰 안 하는 외부 임베드 포함. 멀버타이징·공급망 침해가 iframe 주입 시, `*`는 '카메라로 스파이 가능' vs '못 함'의 차이.
관련 도구
Referrer-Policy 헤더 빌더
Referrer-Policy 값 선택 → 송출 요청이 보낼 `Referer` 헤더 정확히 확인 — 동일 오리진, 크로스 오리진 HTTPS, HTTPS→HTTP 다운그레이드.
Content-Security-Policy 빌더
디렉티브별 소스 리스트로 CSP 헤더 빌드, 3개 시작 프리셋·위험한 와일드카드 실시간 경고.
SPF 레코드 빌더
메커니즘·IP·include로 SPF TXT 레코드 작성, 실시간 DNS 조회 카운트와 경고.
Cache-Control 헤더 빌더
체크리스트로 HTTP Cache-Control 헤더 생성 — 프레시니스·재검증·immutable·자주 쓰는 프리셋.
HSTS 헤더 빌더
Strict-Transport-Security 헤더 구성 — max-age·includeSubDomains·preload, preload 리스트 자격 실시간 체크.
Cookie / Set-Cookie 헤더 빌더
이름/값 + 보안 속성(SameSite·Secure·HttpOnly·Partitioned·Max-Age)으로 `Set-Cookie` 응답 헤더 작성, 안전 경고 포함.