高度なカスタマイズ > ビジネスロジックのカスタマイズ > ThingWorx > Windchill への ThingWorx マッシュアップの追加 > ThingWorx ClickJack のサポート
  
ThingWorx ClickJack のサポート
クリックジャッキングとは、攻撃者がフレームを使用してサイトを表示し、1 つ以上の非表示のレイヤーをサイトの上に適用することにより、ユーザーに、元のサイトのコンテンツと思わせて、非表示のレイヤー上のコンテンツをクリックさせる行為です。クリックジャッキングを防止するには、ページをフレームに表示しても問題がないかどうかをブラウザに通知する、サーバーからのレスポンスヘッダーが使用されます。それぞれのブラウザのコンプライアンスが異なるため、フレームに表示できるドメインを示すために、2 つの異なるヘッダーが使用される必要があります。これら 2 つのヘッダー (X-Frame-OptionsContent-Security-Policy) については、次に説明します。ThingWorx はこれらのヘッダーを両方使用するため、管理者はフレーム表示を全面的に禁止するように設定したり、正当なドメインからのフレーム表示のみ、または特定のドメインからのフレーム表示のみを許可するように設定したりできます。
ヘッダーの説明
クリックジャッキングを防止するために使用されている 2 つのヘッダーは、X-Frame-OptionsContent-Security-Policy です。
frame-ancestors が含まれている Content Security Policy Level 2 は、Internet Explorer、Edge、Opera Mini を除くすべてのブラウザの現行バージョンでサポートされており、Firefox 52 では部分的にのみサポートされています。完全なリストは、http://caniuse.com/#feat=contentsecuritypolicy2 にあります。 X-Frame-Options Allow-From ヘッダーは、Internet Explorer バージョン 8 と Firefox バージョン 18 でサポートされていますが、Chrome、Safari、または Opera ではサポートされていません。 サポートされているブラウザのリストは、https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Limitations にあります。
X-Frame-Options
DENY - サイトがページをフレームに表示しようとするかどうかに関係なく、ページはフレームに表示されません。
SAMEORIGIN - フレームのドメインがページのドメインと同じである場合にかぎり、ページはフレームに表示されます。
ALLOW-FROM http://example.com - フレームのドメインが指定されているドメインである場合にかぎり、ページはフレームに表示されます。
Content-Security-Policy
frame-ancestors ‘none’ - ドメインに関係なく、フレームにリソースがロードされるのを禁止します。
frame-ancestors ‘self’ - ドメインが同じである場合にかぎり、フレームにリソースがロードされるのを許可します。
frame-ancestors domain1.com domain2.com - 指定されているリストにドメインが含まれている場合にかぎり、フレームにリソースがロードされるのを許可します。
ThingWorx のサポート
コンフィギュレーション
ThingWorx では HTTP リクエストのフィルタを使用して両方のヘッダーがサポートされる予定です。管理者は、ClickjackFilterDenyClickjackFilterSameOrigin、および ClickjackFilterWhiteList の 3 つのフィルタのいずれかを有効または無効にすることができます。これを行うには、ThingWorx アプリケーションの web.xml ファイル内にある 3 つのフィルタマッピングのいずれかをコメント解除します。
例:
<!-- 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) を含んでいるスペース区切りリストのフォーマットである必要があります。
* 
Allow-From ヘッダーには制限が 1 つあります。これで許可できるドメインは 1 つのみです。