AZ Tools

Permissions-Policy 헤더 빌더

네트워크

Permissions-Policy 헤더는 Feature-Policy의 현대적 대체: 페이지와 iframe이 어떤 기능 사용 허용되는지 브라우저에 지시. 각 기능 하나씩 선택 + 완전 차단·동일 오리진만·모든 오리진·커스텀 리스트 한정 선택. 잘 알려진 기능(camera·microphone·geolocation·payment·USB 등)을 카테고리별 태그 → 물리는 거 놓치지 않게. 경고는 안전하지 않은 기본값 잡음 — 모든 임베디드 오리진에 기능 넘기는 와일드카드, 스킴 없는 커스텀 리스트.

프리셋
센서
  • accelerometer
    가속도계 읽기
  • gyroscope
    자이로스코프 읽기
  • magnetometer
    자기계 읽기
  • ambient-light-sensor
    주변광 읽기
미디어 캡처
  • camera
    사용자 카메라 사용
  • microphone
    사용자 마이크 사용
  • autoplay
    미디어 자동재생
  • display-capture
    getDisplayMedia로 스크린쉐어
  • speaker-selection
    출력 오디오 장치 선택
결제 & 인증
  • payment
    Payment Request API 사용
  • publickey-credentials-get
    WebAuthn 사용
디스플레이
  • fullscreen
    프로그램으로 전체화면 진입
  • picture-in-picture
    PIP 비디오 열기
  • screen-wake-lock
    화면 깨어 있게 유지
  • xr-spatial-tracking
    WebXR 공간 추적 사용
기타
  • geolocation
    사용자 위치 읽기
  • clipboard-read
    클립보드 내용 읽기
  • clipboard-write
    클립보드에 쓰기
  • usb
    Web USB 사용
  • serial
    Web Serial 사용
  • bluetooth
    Web Bluetooth 사용
  • idle-detection
    사용자 유휴 감지
  • midi
    Web MIDI 사용
  • web-share
    Web Share API 사용
응답 헤더
Permissions-Policy: autoplay=(self), fullscreen=(self), picture-in-picture=(self), clipboard-write=(self), web-share=(self)

모든 HTML 응답에 적용. 브라우저가 위반을 컬렉터로 보내길 원하면 Report-To + `report-uri` 디렉티브(여기선 빌드 안 함) 사용.

사용법

  1. strict 프리셋(전부 끔)부터 시작해 페이지가 실제 필요한 것만 켜기.
  2. 대부분 페이지 레벨 기능엔 `self`가 정답. `*`는 거의 정답 아님 — 모든 iframe에 기능 허용.
  3. 커스텀 모드는 오리진 허용 리스트(`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 '못 함'의 차이.

관련 도구