The X-Frame-Options HTTP 응답 헤더는 해당 페이지를 <frame> 또는<iframe>, <object> 에서 렌더링할 수 있는지 여부를 나타내는데 사용. 사이트 내 콘텐츠들이 다른 사이트에 포함되지 않도록 하여 clickjacking 공격을 막기 위해 이 헤더를 사용.
X-Frame-Options: deny
→ 랜더링을 허용하지 않음
X-Frame-Options: sameorigin
→ 동일한 사이트의 frame에서만 허용
X-Frame-Options: allow-from uri
→ uri 도메인의 페이지에서 포함된 것만 허용
서버별 설정 방법
Apache 설정
1. Header always set X-Frame-Options "sameorigin"
→ 아파치에서 모든 페이지에 X-Frame-Options 헤더를 전송
2. Header set X-Frame-Options "deny"
→ 아파치에서 X-Frame-Options 거부
3. Header set X-Frame-Options "allow-from https://test.com/"
→ 아파치에서 특정 호스트에서 X-Frame-Options을 허용
nginx 설정
add_header X-Frame-Options sameorigin;
→ nginx에서 X-Frame-Options 헤더를 전송 (http, server, location)
IIS 설정
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="sameorigin" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
→ IIS에서 X-Frame-Options 헤더를 전송 (Web.config)
우회 방법
1. Burp Suite를 통한 x-frame-options 확인
2. 웹 취약점 탐색기 nikto
3. 웹 취약점 탐색기 owasp-zap