본문 바로가기
IT

Iframe 태그와 sandbox / referrerpolicy

by 끊임없는정진 2023. 1. 10.

▶ Iframe 태그

iframe은 중첩해서 브라우저를 넣을 수 있는 태그로 현재 문서 안에 다른 HTML 페이지를 삽입할 수 있는 태그이다. 예를 들면, 다음과 같은 iframe 태그를 삽입해서 지도를 아래와 같이 넣을 수 있다. 

<iframe id="inlineFrameExample"
    title="Inline Frame Example"
    width="300"
    height="200"
    src="https://www.openstreetmap.org/export/embed.html?bbox=-0.004017949104309083%2C51.47612752641776%2C0.00030577182769775396%2C51.478569861898606&layer=mapnik">
</iframe>

 

삽입된 브라우저의 Browsing context는 각자 자신만의 History와 Document를 가진다. 부모를 가지지 않는 최상위 Browsing context는 브라우저 창으로서, window 객체로 나타난다. 

 

▶ Iframe 의 sandbox 속성

HTML5에서 'sandbox'라는 속성이 새로 추가되었는데, sandbox 속성은 iframe 요소에 보일 콘텐츠에 대한 추가적인 제한사항(restrictions)들의 집합을 명시한다. sandbox 속성의 값은 모든 제한 사항을 적용하기 위해 비워놓거나(sandbox), 특정 제한 사항만을 해제하기 위해 미리 정의해놓은 값들을 공백 문자(space)로 결합하여 사용할 수도 있다. 속성값들의 목록은 다음과 같다.

속성값 설명
(empty) 모든 제한사항을 적용함
allow-forms 리소스(resource)가 폼 데이터를 제출할 수 있도록 허용
allow-modals 리소스가 모달 윈도우(modal window)를 열 수 있도록 허용
allow-orientation-lock 리소스가 화면 방향 전환을 잠글 수 있도록 허용
allow-pointer-lock 리소스가 Pointer Lock API를 사용할 수 있도록 허용
allow-popups window.open()이나 target="_blank",showModalDialog() 등 팝업(popup)을 허용함
allow-popups-to-escape-sandbox 모든 제한 사항이 적용된 문서(sandboxed document)에서 새로운 창(window)을 열 때 제한사항을 상속받지 않은 창을 열 수 있도록 허용함.
allow-presentation 리소스가 프레젠테이션 세션(presentation section)을 시작할 수 있도록 허용함.
allow-same-origin 리소스가 same-origin policy를 통과된 것처럼 취급될 수 있도록 허용함.
allow-scripts 리소스가 스크립트를 실행할 수 있도록 허용하지만, 팝업창은 생성하지 못함.
allow-storage-access-by-user-activation 리소스가 Storage Access API를 사용하여 상위 스토리지 기능에 접근 요청을 할 수 있도록 허용함.
allow-top-navigation 리소스가 최상위 브라우징 컨텍스트(_top)를 탐색할 수 있도록 허용함
allow-top-navigation-by-user-activation 리소스가 사용자의 요청이 있을 때만 최상위 브라우징 컨텍스트(_top)를 탐색할 수 있도록 허용함.

 

 

▶ Iframe 의 referrerpolicy 속성

Referer 헤더는 HTTP요청을 하면, 요청한 출처나 URL을 헤더에 담아 전달할 때, 해당 헤더에 요청한 출처 또는 URL을 뜻한다. Referer을 통해 접근한 출처를 알 수 있는 유익한 정보이나 자칫 잘못하면 치명적인 정보 누출을 초래할 수 있다. 이 때문에 해당 위험요소를 막기위해서 Referer policy 가 존재한다. html의 meta 태그로도 설정할 수 있지만, iframe의 경우 referrerpolicy 속성으로 설정할 수 있다.

속성값 설명
no-referrer referrer 정보 전송하지 않음
no-referrer-when-downgrade 디폴트값. https없는 origin은 referrer 헤더값을 보내지 않는다.
origin 모든 경우 referer로 문서의 origin만 보내도록 설정한다.
origin-when-cross-origin origin,path,query string 전부 same-origin일 때 보내고, 다른 경우에는 origin만 전송한다.
same-origin same-site origin의 경우 referrer가 전송되고, cross-origin의 경우에는 referrer정보를 보내지 않는다.
strict-origin 같은 protocol 보안 level에서는 (HTTPS/HTTPS) referrer로 문서의 origin만 보내지만, 더 낮은 보안에는 (HTTPS/HTTP) 보내지 않는다.
strict-origin-when-cross-origin same-origin request를 다룰 때, origin, path, querystring 정보를 보내고, 같은 protocol 보안 level에서는 (HTTPS/HTTPS) origin만 보내고, 더 낮은 보안 level (HTTPS/HTTP)은 헤더없이 보낸다.
unsafe-url referrer에 origin과 path를 포함한다(fragment, password, username은 포함하지 않는다.). TLS 보호 resource에서 안전하지 않은 origin으로 origin과 path를 포함하기 때문에 안전하지 않다.

 

 

출처 : https://developer.mozilla.org/ko/docs/Web/HTML/Element/iframe#attr-referrerpolicy

https://www.geeksforgeeks.org/html-iframe-referrerpolicy-attribute/

 

댓글