クリックジャッキングとは?
クリックジャッキング攻撃 (さらに技術的な用語としては「UI Redress攻撃」) は、ユーザーのクリックまたはキー押下が攻撃者に「ハイジャック」されたときに発生します。 攻撃者は、ユーザーが移動しようとするサイトの上のフレームに、自分のサイト (不透明または透明) を置きます。 その状態でもユーザーには正しいサイトが表示され、外見上は害のないボタンまたはリンクをクリックするか、またはサイトのフィールドの1つに機密情報を入力します。すると、攻撃者は、不正な目的でそのクリックを使用するか、またはキー押下を追跡して、それらを別のアプリケーションまたはドメインに転送します。
Boxはどのようにしてクリックジャッキングを防止していますか?
クリックジャッキング攻撃から防御するため、Boxは埋め込みウィジェットおよびX-Frame-Optionsヘッダー内に予防手段を採用しています。
Boxの埋め込みウィジェットは、インタラクティブな「クラウド (雲) をドラッグ」するゲームを使用します。そこでは、ページ上にランダムに置かれた白色の雲のパズルピースを、やはりページ上にランダムに置かれた雲の形状の「穴」に差し込む必要があります。 両方のオブジェクトはページ上にランダムに置かれているため、攻撃者はユーザーのクリック位置を簡単に予測できません。したがって、クリックジャッキング攻撃の有効性が低下し、またクリックジャッキング手段を使用する試行の価値も低下します。 このランダム化された操作は、埋め込まれたコンテンツに対するクリックジャッキング攻撃を防止する最も効果的な方法です。 雲をクリックして正しい位置にドラッグできる場合、ユーザーは、正しいサイトとやり取りを行っていることを確認できます。
Boxを使用しているお客様が、クリックジャッキングを防止する方法を教えてください。
Boxは、お客様が、ランダム化インタラクション (「クラウド (雲) をドラッグ」するゲーム) を含むBox埋め込みウィジェットを使用することを推奨しています。 しかし、お客様によっては、埋め込みウィジェットを使用することを望まず、クラウドゲームインタラクションが含まれていないウィジェットの使用を望んでいることを承知しています。 Boxでは、Boxのセキュリティチームが承認したクリックジャッキング防御の1つを実装したお客様に、クラウドゲームインタラクションのないオプションを提供しています。
クラウドゲームインタラクションを意図的に使用しないことを希望する場合は、プロセスを開始するにあたってBoxサポートに問い合わせる必要があります。 クラウドゲーム (Boxコンテンツにクリックジャッキング保護を提供) の適用除外を認めるために、Boxサポートは、お客様のドメイン/ウェブサイトに独自の形でクリックジャッキング防止策が実装されていることを把握する必要があります。 Boxサポートからは以下を求められます。
- 適用除外を希望するすべてのドメインのリスト。 これは、通常、https://portal.example.com/resource/の形式で表示されます。
- これらのドメインで、以下に示す承認済みのクリックジャッキング防御のうち1つ以上を実装していることの証明。
- frame-ancestorsディレクティブを含むコンテンツセキュリティポリシー (CSP) ヘッダーを返す。
- ヘッダーの値はframe-ancestors 'self'またはframe-ancestors 'none'である必要があります。 同じオリジンのみを許可するには'self'、すべてのフレーム化を禁止するには'none'を使用します。
- CSPヘッダーを返していることを証明するには、許可リストに含まれるすべてのページ (ウィジェットを埋め込む予定のないページも含む) のレスポンスヘッダーのスクリーンショットまたはHARキャプチャを添付してください。 このヘッダーは、サポートするAPIエンドポイントだけではなく、実際のページに存在する必要があります。
- HTTPレスポンスでX-Frame-Optionsヘッダーを返す。
- X-Frame-Optionsヘッダーの値としてDENYまたはSAMEORIGINを渡す必要があります。 ヘッダー値としてALLOW-FROMは許可されません。
- X-Frame-Optionsヘッダーを返していることを証明するには、許可リストに含まれるすべてのページ (ウィジェットを埋め込む予定のないページも含む) のレスポンスヘッダーのスクリーンショットを提出してください。 例を次に示します。
- フレームコンテンツを表示する際に新しいウィンドウをポップアップ表示する。 フレームコンテンツを表示する際に新しいウィンドウをポップアップ表示していることを証明するには、許可リストに含まれるすべてのページ (ウィジェットを埋め込む予定のないページも含む) におけるこの動作の画面記録を提出してください。
- レスポンスヘッダーのスクリーンショットの提出に加えて、許可リストに追加するURLに一致するすべてのページでX-Frame-Optionsを返していることを必ず証明してください。 ページに埋め込みウィジェットを表示する予定かどうかに関わらず、許可リストに追加するURLに一致するすべてのページに選択したクリックジャッキング防御を実装しておく必要があります。 よくある問題として、ユーザーから許可リストにhttps://portal.example.com/を追加するよう依頼されるものの、https://portal.example.com/some-pageでしかX-Frame-Optionsが返されないケースがあります。これは許容できません。https://portal.example.com/*に一致するすべてのページでX-Frame-Optionsヘッダーを返す必要があります。
- frame-ancestorsディレクティブを含むコンテンツセキュリティポリシー (CSP) ヘッダーを返す。
Boxによるクリックジャッキング防御
Boxが承認しているクリックジャッキング防御には、次のものがあります。
- frame-ancestorsディレクティブを含むコンテンツセキュリティポリシー (CSP) ヘッダーを使用する
- X-Frame-Optionsヘッダーを使用する
- フレームコンテンツを新しいウィンドウに表示する
X-Frame-Optionsヘッダーは、サイトを<frame>タグまたは<iframe>タグ内に描画可能か指定することにより、クリックジャッキングの防止に使用される業界全体の標準です。 ブラウザのサポートと制限など、各種のX-Frame-Optionsヘッダータイプの具体的な詳細については、こちらの記事を参照してください。
Boxが自分のサイトで正しく表示されない、または空のフレームを取得してしまいます。どうすればよいですか?
自分のサイトでBoxを使用しようとして空のフレームが表示される場合、またはエラーページを取得する場合は、Box埋め込みウィジェットを使用してください。 埋め込みコードを取得するには、[共有] ボタンをクリックし、次に [共有] ウィンドウで [埋め込み] ボタンをクリックします。 [クリップボードにコピー] をクリックして埋め込みコードをコピーするか、またはウィンドウ内のフィールドから直接選択してコピーします。 Boxの埋め込みを使用するには、コードをhtmlエディタに貼り付けます。