iFrame の埋め込みマッシュアップの許可
クリックジャッキングは、攻撃者がフレームを使用してサイトを表示し、そのサイトに 1 つ以上の見えないレイヤーを貼り付けて、ユーザーが気付かないうちにその見えないレイヤーにある何かをクリックしてしまうものです。クリックジャッキングを防止するには、ページにフレームを使用しても問題がないかどうかをブラウザに指示する、サーバーからのレスポンスヘッダーが使用されます。各ブラウザのコンプライアンスが異なるため、フレームに表示できるドメインを示すために、2 つの異なるヘッダーが使用される必要があります。これらのヘッダーについて以下に説明します。ThingWorx はこれらのヘッダーを使用するため、管理者はフレーム表示を全面的に禁止したり、正当なドメインからのフレーム表示のみ、または特定のドメインからのフレーム表示のみを許可したりできます。
ヘッダーの説明
クリックジャッキングに対処するために使用するヘッダーは次のとおりです。
• 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 リクエストフィルタの使用によって両方のヘッダーをサポートします。管理者は、ClickjackFilterDeny、ClickjackFilterSameOrigin、および 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) を含んでいるスペース区切りリストのフォーマットである必要があります。上記のドメインリストは、すべてのブラウザに使用できます。