Composer의 ThingWorx 모델 정의 > 보안 > iFrame에 내장 매쉬업 허용
iFrame에 내장 매쉬업 허용
클릭재킹(Clickjacking)이란 공격자가 프레임을 사용하여 사이트를 표시하고 해당 사이트 위에 보이지 않는 레이어를 하나 이상 적용하여 사용자가 이 보이지 않는 레이어상의 어떤 것을 클릭하도록 속이는 것을 말합니다. 이러한 클릭재킹 방어는 페이지에 프레임을 지정하는 것이 정상적인 것인지를 브라우저에 알리기 위해 서버의 응답 머리글을 사용합니다. 브라우저 간 규제 준수 차이로 인해 프레임 지정이 허용된 도메인을 표시하는 데 두 개의 서로 다른 머리글을 사용해야 합니다. 이러한 머리글은 아래에 설명되어 있습니다. ThingWorx에서 이러한 머리글을 사용하므로 관리자는 이를 활용하여 모든 프레임 지정을 허용하지 않거나, 자체 원본에만 프레임 지정을 허용하거나, 특정 도메인에만 프레임 지정을 허용할 수 있습니다.
머리글 설명
클릭재킹 방어 시 사용되는 머리글은 다음과 같습니다.
X-Frame-Options
DENY - 페이지 표시를 시도하는 사이트에 관계없이 프레임에 페이지를 표시할 수 없습니다.
SAMEORIGIN - 페이지와 동일한 원본의 프레임에만 페이지를 표시할 수 있습니다.
ALLOW-FROM http://example.com - 지정된 원본의 프레임에만 페이지를 표시할 수 있습니다.
X-Frame-Options를 지원하는 브라우저 목록은 https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Limitations를 참조하십시오.
Content-Security-Policy
frame-ancestors 'none' - 어떤 원본의 리소스도 프레임으로 로드할 수 없습니다.
frame-ancestors 'self' - 동일한 원본의 리소스만 프레임으로 로드할 수 있습니다.
frame-ancestors domain1.com domain2.com - 제공된 목록에 있는 도메인의 리소스만 프레임으로 로드할 수 있습니다.
Content Security Policy Level 2를 지원하는 브라우저 목록은 http://caniuse.com/#feat=contentsecuritypolicy2를 참조하십시오.
ThingWorx 구성
ThingWorx에서는 HTTP 요청 필터를 사용하여 두 머리글을 모두 지원합니다. 관리자는 세 가지 필터 ClickjackFilterDeny, ClickjackFilterSameOrigin, ClickjackFilterWhiteList 중 하나를 활성화하거나 비활성화할 수 있습니다. ThingWorx 응용 프로그램의 web.xml 파일에서 세 가지 필터 매핑 중 하나의 주석 처리를 취소하면 됩니다.
예를 들면 다음과 같습니다.
<!-- use the Deny version to exclude all framing -->
<!--
<filter-mapping>
<filter-name>ClickjackFilterDeny</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<!-- use the SameOrigin version to allow your application to frame, but nobody else -->
<!--
<filter-mapping>
<filter-name>ClickjackFilterSameOrigin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<!-- use the WhiteList version to allow framing from specified domains -->
<filter-mapping>
<filter-name>ClickjackFilterWhiteList</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
ClickjackFilterDeny 또는 ClickjackFilterSameOrigin에 대한 다른 구성은 필요하지 않습니다. 관리자가 ClickjackFilterWhiteList를 사용하도록 선택한 경우 수락된 도메인을 필터 "domains" 매개 변수 값에 추가해야 합니다.
예를 들면 다음과 같습니다.
<filter>
<filter-name>ClickjackFilterWhiteList</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>WHITELIST</param-value>
</init-param>
<init-param>
<param-name>domains</param-name>
<param-value>http://media-pc:8080
http://192.168.152.133:8080 http://domainY.com</param-value>
</init-param>
</filter>
지정된 도메인은 위와 같은 형식이어야 합니다(스키마(HTTP)를 포함하는 공백으로 구분된 목록). 위와 같은 도메인 목록은 모든 브라우저에서 작동합니다.