X-XSS-Protection
응답 헤더 Security

개요

X-XSS-Protection은 과거 일부 브라우저에 내장됐던 반사형 XSS 감사기(필터)의 동작을 제어하던 헤더입니다. 현재는 그 필터 자체가 오히려 보안 취약점을 만들 수 있어 폐기되었으며, 권장 설정은 필터를 끄는 X-XSS-Protection: 0입니다.

자세히

예전 Internet Explorer와 Chrome/Safari에는 요청 파라미터가 응답에 그대로 반사되면 XSS로 의심해 차단하는 휴리스틱 필터가 있었습니다. X-XSS-Protection: 1; mode=block이 한때 권장되기도 했지만, 이 필터는 오탐으로 정상 페이지를 깨뜨렸고, 더 심각하게는 공격자가 필터의 동작을 악용해 페이지의 일부 스크립트를 선택적으로 무력화하거나 정보를 유출하는 새로운 취약점(예: 크로스사이트 정보 누출)을 만들어냈습니다.

이런 이유로 Chrome은 XSS Auditor를 완전히 제거했고, Firefox는 애초에 구현하지 않았으며, Edge도 제거했습니다. 따라서 이 헤더의 1 계열 값은 현대 브라우저에서 대부분 무시되거나, 오래된 브라우저에서만 위험한 필터를 켭니다.

오늘날 권장 구성은 X-XSS-Protection: 0으로 남아 있을지 모를 구형 필터를 명시적으로 비활성화하고, 실제 XSS 방어는 Content-Security-Policy(특히 script-src의 nonce/해시)와 서버측 출력 인코딩·입력 검증에 맡기는 것입니다. 이 헤더는 '설정하되 0으로'가 정답인 드문 사례입니다.

문법

X-XSS-Protection: <0 | 1 | 1; mode=block | 1; report=<url>>

e.g. X-XSS-Protection: 0

지시어 / 값

0브라우저 내장 XSS 감사기(필터)를 비활성화. 현대 권장값.
1필터 활성화(구형 브라우저). 감지 시 의심 부분을 무력화.
1; mode=block감지 시 페이지 렌더링을 아예 차단. 과거 권장이었으나 부작용으로 폐기.
1; report=<url>감지 시 지정 URL로 보고(Chromium 전용, 폐기).

실무 참고

관련 헤더

관련 상태코드

스펙 근거