X-Frame-Options

번역이 완료되지 않았습니다. Please help translate this article from English

The X-Frame-Options HTTP 응답 헤더는 해당 페이지를 <frame> 또는<iframe><object> 에서 렌더링할 수 있는지 여부를 나타내는데 사용됩니다. 사이트 내 콘텐츠들이 다른 사이트에 포함되지 않도록 하여 clickjacking 공격을 막기 위해 이 헤더를 사용합니다.

이 설정은 사용자가  X-Frame-Options를 지원하는 브라우저를 통해 페이지에 접근할 경우에만 보안됩니다.

Header type Response header
Forbidden header name no

Syntax

X-Frame-Options 과 관련해서는 다음의 3가지 설정이 가능합니다.

X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/

Directives

deny는 같은 사이트 내에서 frame을 통한 접근도 막습니다.
sameorigin를 명시할 경우에는 frame에 포함된 페이지가 페이지를 제공하는 사이트와 동일한할 경우 계속 사용할 수 있습니다.

deny
어떠한 사이트에서도 frame 상에서 보여질 수 없습니다.
sameorigin
동일한 사이트의 frame에서만 보여집니다. 해당 스펙 안에서 브라우저 벤더가 최상위(top level), 혹은 부모(parent), 모든 체인(whole chain)에서 적용할지를 결정하도록 맡겨집니다. 하지만 모든 조상(ancestor)이 동일한 사이트에서 제공되지 않으면 이 옵션은 그다지 유용하지 않다고 논의되고 있습니다. (참고 bug 725490). 상세 지원사항에 대한 참고 Browser compatibility.
allow-from uri
지정된 특정 uri의 frame 에서만 보여집니다. 파이어폭스에서는 sameorigin 과 동일한 문제를 겪고 있습니다. 즉 동일한 사이트에 있는지에 대해서 frame의 조상(ancestor)을 확인하지 않습니다.

예시

Note: 메타 테그 설정은 무용지물이다! 이를테면, <meta http-equiv="X-Frame-Options" content="deny"> 태그는 아무런 영향을 미치지 않는다. 따라서 사용하지지 말ㄹ! 오직 아래의 예제처럼 HTTP 헤더 설정을 통해서만X-Frame-Options이 동작한다.

Apache 설정

아파치에서 모든 페이지에 X-Frame-Options 헤더를 전송하려면, 사이트 설정에 다음의 설정을 추가합니다.

Header always set X-Frame-Options "sameorigin"

아파치에서 X-Frame-Options 거부(deny)하려면, 사이트 설정에 다음의 설정을 추가합니다.

Header set X-Frame-Options "deny"

아파치에서 특정 호스트(host)에서 X-Frame-Options 를 허용하려면(allow-from), 사이트 설정에 다음의 설정을 추가합니다.

Header set X-Frame-Options "allow-from https://example.com/"

nginx 설정

nginx에서 X-Frame-Options 헤더를 전송하려면 http, server, location 설정에 아래 설정을 추가합니다.

add_header X-Frame-Options sameorigin;

IIS 설정

ISS에서 X-Frame-Options 헤더를 전송하려면, 사이트의 Web.config 파일에 다음을 추가합니다.

<system.webServer>
  ...

  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="sameorigin" />
    </customHeaders>
  </httpProtocol>

  ...
</system.webServer>

HAProxy 설정

HAProxy에서 X-Frame-Options 헤더를 전송하려면, front-end, listen, 혹은 backend 설정에 다음을 추가합니다.

rspadd X-Frame-Options:\ sameorigin

Specifications

Specification Title
RFC 7034 HTTP Header Field X-Frame-Options

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
X-Frame-OptionsChrome Full support 4Edge Full support 12Firefox Full support 3.6.9IE Full support 8Opera Full support 10.5Safari Full support 4WebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
ALLOW-FROMChrome No support NoEdge No support 12 — 79Firefox No support 18 — 70IE Full support 8Opera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android Full support 18Opera Android ? Safari iOS No support NoSamsung Internet Android No support No
SAMEORIGINChrome Full support Yes
Notes
Full support Yes
Notes
Notes Starting in Chrome 61, this applies to all of a frame's ancestors.
Edge Full support 12Firefox Full support Yes
Notes
Full support Yes
Notes
Notes Starting in Firefox 59, this applies to all of a frame's ancestors.
IE Full support 8Opera Full support Yes
Notes
Full support Yes
Notes
Notes Starting in Opera 48, this applies to all of a frame's ancestors.
Safari Full support YesWebView Android Full support Yes
Notes
Full support Yes
Notes
Notes Starting in Chrome 61, this applies to all of a frame's ancestors.
Chrome Android Full support Yes
Notes
Full support Yes
Notes
Notes Starting in Chrome 61, this applies to all of a frame's ancestors.
Firefox Android Full support Yes
Notes
Full support Yes
Notes
Notes Starting in Firefox 59, this applies to all of a frame's ancestors.
Opera Android Full support Yes
Notes
Full support Yes
Notes
Notes Starting in Opera 48, this applies to all of a frame's ancestors.
Safari iOS ? Samsung Internet Android Full support Yes

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.

See also