X-Frame-OptionsX-Frame-Options는 이 페이지가 다른 페이지의 <iframe>·<frame>·<object> 안에 삽입될 수 있는지를 통제하는 보안 헤더입니다. 주 목적은 클릭재킹(clickjacking) 방어로, 공격자가 우리 페이지를 투명 프레임으로 덮어 사용자의 클릭을 가로채는 것을 막습니다.
값은 DENY(전면 금지) 또는 SAMEORIGIN(동일 오리진만 허용) 두 가지가 널리 지원됩니다.
클릭재킹은 공격자가 자신의 페이지 위에 우리 사이트(예: 송금·설정 변경 페이지)를 보이지 않는 iframe으로 얹고, 그 위에 미끼 UI를 배치해 사용자가 미끼를 클릭했다고 믿는 사이에 실제로는 프레임 안 버튼을 누르게 만드는 공격입니다. X-Frame-Options로 프레이밍 자체를 막으면 이 공격이 성립하지 않습니다.
인증·상태 변경 기능이 있는 모든 페이지에는 최소 SAMEORIGIN, 프레이밍이 전혀 필요 없으면 DENY를 거는 것이 권장됩니다. 과거 존재했던 ALLOW-FROM은 브라우저 지원이 일관되지 않아 폐기되었으므로, 특정 오리진만 허용하려면 CSP를 써야 합니다.
현대적 대체는 CSP의 frame-ancestors 지시어입니다. frame-ancestors는 여러 허용 오리진 지정이 가능하고 더 유연하며, 최신 브라우저는 두 헤더가 함께 있으면 CSP frame-ancestors를 우선합니다.
X-Frame-Options: <DENY | SAMEORIGIN>e.g. X-Frame-Options: SAMEORIGIN
DENY | 어떤 사이트도 이 페이지를 프레임(iframe/frame/object)으로 감쌀 수 없습니다. |
SAMEORIGIN | 같은 오리진의 페이지만 이 페이지를 프레임할 수 있습니다. |