Sec-Fetch-Dest
요청 헤더 Security

개요

Sec-Fetch-Dest는 브라우저가 자동으로 붙이는 Fetch Metadata 헤더로, 요청된 리소스가 최종적으로 어떻게 쓰일지(문서·이미지·스크립트·스타일·폰트·워커·빈 fetch 등)를 알려 줍니다. 서버는 목적지와 실제 콘텐츠 유형의 불일치를 근거로 오용을 탐지할 수 있습니다.

자세히

값은 document·image·script·style·font·audio·video·worker·embed·object·empty 등 다양합니다. empty는 fetch()·XHR처럼 특정 소비 목적지가 없는 요청을 뜻합니다. 이 헤더는 <img src>가 트리거한 요청인지, <script src>가 트리거한 요청인지처럼 '브라우저가 이 응답을 무엇으로 다룰 예정인지'를 서버에 노출합니다.

보안 활용의 핵심은 목적지와 리소스 성격의 모순 탐지입니다. 예컨대 JSON API 엔드포인트로 향하는 요청의 Sec-Fetch-Dest가 script라면, 이는 공격자가 응답을 <script>로 로드해 XSSI로 데이터를 훔치려는 신호일 수 있습니다. 서버는 '이 엔드포인트는 script/style 목적으로 로드되면 안 된다'는 규칙으로 거부할 수 있습니다.

또한 X-Content-Type-Options: nosniff와 함께, 응답의 실제 Content-Type과 요청 목적지가 어긋나면(예: text/html인데 dest=script) 브라우저가 실행을 거부합니다. Sec-Fetch-Dest는 이 판단을 서버측에서도 선제적으로 내릴 수 있는 재료를 줍니다.

문법

Sec-Fetch-Dest: <document | image | script | style | font | empty | audio | video | worker | ...>

e.g. Sec-Fetch-Dest: image

지시어 / 값

document최상위 문서로 사용될 요청(내비게이션).
image / audio / video / font각각 이미지·오디오·비디오·폰트 리소스로 로드됨.
script / style / worker스크립트·스타일시트·워커로 실행/적용될 리소스.
emptyfetch()·XHR처럼 특정 목적지가 없는 요청.

실무 참고

관련 헤더

관련 상태코드

스펙 근거