HTTP X-XSS-Protection헤더는 Internet Explorer, Chrome 및 Safari에서 제공하는 기능으로서, (XSS) 공격을 감지 할 때 페이지 로드를 중지시킬 수 있다. 최신 브라우저에서는 Inline Javascript('unsafe-inline')사용을 못하게 하는 CSP(Content-Security-Policy) 보호기능이 있으나, 해당 기능을 지원하지 않는 구형 웹브라우저에서 사용자를 보호 할수 있는 기능을 제공할 수 있다.
브라우저들의 기존 버전에서는 X-XSS-Protection을 따로 설정해 주었으나, 현대 대부분의 브라우저들은 X-XSS-Protection이 자동으로 설정되어 브라우저 자체에서 필터링해준다.
X-XSS-Protection: 0
-> XSS 필터링을 비활성화합니다.
X-XSS-Protection: 1
-> XSS 필터링을 사용합니다 (일반적으로 브라우저의 기본값입니다). 사이트 내에서 스크립팅 공격이 감지되면 브라우저는 안전하지 않은 영역을 제거 후에 렌더링을 하게 됩니다.
X-XSS-Protection: 1; mode=block
-> XSS 필터링을 사용합니다. 공격이 탐지되면 안전하지 않는 영역을 제거하는게 아니라, 페이지 렌더링을 중단합니다
X-XSS-Protection: 1; report=<reporting-uri>
-> XSS 필터링을 사용합니다. XSS 공격을 탐지하면 브라우저는 페이지 렌더링을 차단하고 위반 사항을 보고합니다. 이것은 CSP report-uri (en-US) 지시문의 기능을 사용하여 보고서를 보냅니다.
developer.mozilla.org/ko/docs/Web/HTTP/Headers/X-XSS-Protection
서버별 X-XSS-Protection 헤더 설정방법
Apache 웹 서버
Header set X-XSS-Protection “1; mode=block”
혹은
Header always append X-XSS-Protection “1; mode=block”
NginX 웹 서버
add_header X-Xss-Protection "1; mode=block" always;
이제 위 기능을 해제하는 방법을 알아본다.
1. Burp Suite를 이용한 X-XSS-Protection 해제
2. 브라우저에서 기능 해제
크롬일 경우,
CMD창 > chrome.exe --disable-web-security --user-data-dir=C:\temp
인터넷 익스플로우일 경우,
설정 > 인터넷 옵션 > 보안 > 사용자 지정 수준 > XSS 필터 사용 안함 으로 체크