iframe
: 웹 페이지 안에 또 다른 웹페이지를 삽입하는 것
구글맵 iframe에 대한 예시
페이지 하나에 수많은 페이지를 표현할 수 있지만, 점점 사라지고 있는 추세
iframe은 **ClickJacking**(클릭재킹)
이라는 해킹 공격에 취약한 보안취약점으로 구분됨
ClickJacking
: 사용자가 특정한 웹페이지를 클릭하지만, 사실은 실제 컨텐츠는 숨겨져 있고 공격에 사용되는 html 내 요소를 클릭하게 되는 것. 즉 정상적인 동작처럼 보여지게 하여 사용자의 정보를 갈취 하거나, 사용자를 속이는 공격인것
이러한 보안 이슈로 인해 서버에서 X-Frame-Options
설정을 해제할 수 없었음
Spring Security 에서는 기본적으로 X-Frame-Options Click Jacking 공격을 막는 설정이 되어있음
혹은 CORS 가 생기게 된 계기였다. CORS 는 Cross Origin Resource Sharing 으로 도메인이 다른 서버로 부터 resource 를 받을 수 있도록 허용해주는 방법이 생기게 된 것이였다. 규정을 지킨 도메인 <-> 서버 끼리 허용 하는 방식이기 때문에 비교적 안전한 방법이었지만 iframe 에서 사용하던 방식에 비해, 불편하고 제약이 많은 방식 이었다. 그렇게 생겨나게 된 방법이 http header 조작이다.
보통 클라이언트 쪽에서 iframe을 사용할 때 볼 수 있는 에러에서 확인이 가능한데, 이는 iframe태그 등에서 외부 참조가 가능/불가능을 설정할 수 있는 통신 설정.
iframe
이외에도object
,embeded
태그를 사용할 때 볼 수 있다
Http Header 보안헤더 중 하나인 X-Frame-Options 는 몇가지의 값을 통해, 부분 허용이 가능해짐
사용 가능한 옵션
DENY
: iframe 비허용(불가)SAMEORIGIN
: 동일 도메인 내에선 접근 가능ALLOW-FROM {도메인}
: 특정 도메인 접근 가능ALLOW-FROM 옵션은 대부분의 브라우저에서 허용 되지 않음. 그렇기에, 다른 방법을 생각 필요