クリックジャック保護の定義
クリックジャックは、ユーザーをだまして何か (ボタンまたはリンクなど) をクリックさせる攻撃の一種です。クリックにより、悪意のあるアクションを実行する HTTP 要求が送信され、データ侵入、認証されていないメール、ログイン情報の変更、または同様の結果がもたらされる可能性があります。この種類の攻撃から保護するには、ほとんどの Salesforce ページを同じドメインのページでインラインフレームでのみ提供できます。フレーム化できるページ種別と、関連するクリックジャック設定の定義方法について説明します。
必要なエディション
| 使用可能なインターフェース: Salesforce Classic および Lightning Experience の両方 |
| 使用可能なエディション: Contact Manager Edition、Group Edition、Professional Edition、Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
クリックジャック保護
クリックジャックでは、信頼済みのドメインまたはサイトを使用してユーザーをだまし、悪意のあるリンクをクリックさせます。クリックジャックでは、信頼済みドメインが iframe で提供された後、非表示または透明の UI コントロールが同じ場所で提供されます。たとえば、[保存] ボタンの上にある透明なボタンです。ユーザーは、実際には非表示の UI コントロールをクリックしているときに、最上位の iframe をクリックしていると思っています。
ユーザーを保護するために、Salesforce ではクリックジャック保護を使用します。Salesforce が提供するページの場合、クリックジャック保護はコンテンツセキュリティポリシー (CSP) の frame-ancestors HTTP 応答ヘッダーディレクティブを介して実装されます。HTTP 応答ヘッダーは、HTTP 要求に応じてサーバーからブラウザーまたはクライアントマシンに渡される HTTP 応答の一部です。そのヘッダー内のディレクティブは、追加のコンテキストまたは指示を提供する値です。CSP の frame-ancestors HTTP 応答ヘッダーディレクティブは、iframe でページを読み込むことができるサイトをブラウザーに伝えます。
Salesforce では、CSP の frame-ancestors HTTP 応答ヘッダーディレクティブが、そのディレクティブがサポートされている場合に Salesforce が提供するページに適用されます。クリックジャック保護をより多くのユーザーに拡張するには、Salesforce が要求アプリケーションまたは専門ブラウザーでそのディレクティブがサポートされるかどうかを特定できないまれなケースで、そのディレクティブを含めます。詳細は、「一般的ではないブラウザーへのクリックジャック保護の適用」を参照してください。
Salesforce には 3 つの CSP frame-ancestors 値が適用されます。ページ種別によって、デフォルトでこの HTTP 応答ヘッダーが存在するかどうかと、ヘッダー内でこれらのどのオプションを使用できるかが決まります。
'none'— このページを iframe で読み込むことができないようにします。'self'– 同じ URL スキームとポート番号を含め、保護されたページと同じオリジンからのページでこのページを iframe で読み込むことができます。- ドメインのリスト — このページを iframe で読み込むことができるドメイン。リストにはワイルドカードを含めることができます。たとえば、
*.force.comです。通常、このオプションは'self'値と組み合わせて使用されます。
frame-ancestors ヘッダーディレクティブは、古い X-Frame-Options ヘッダーを置き換えます。詳細は、Mozilla 開発者ネットワークの「X-Frame-Options」を参照してください。CSP ヘッダーサイズ
インフラストラクチャによっては、HTTP ヘッダーの最大サイズが制限されます。組織で提供されるコンテンツを複数のドメインでフレーム化できるようにする場合は、CSP ヘッダーのサイズを 12 KB 未満に抑えます。ヘッダーサイズが 16 KB に近づくと Salesforce のお客様から問題が報告され、サードパーティが処理中にヘッダーを追加することがよくあります。
Salesforce ログインページ
外部サイトでは、https://login.salesforce.com などの汎用ログインページを含め、Salesforce ログインページをフレーム化できません。また、外部サイトでは、https://mycompany.my.salesforce.com など、組織の [私のドメイン] のログインページをフレーム化できません。このようなページでは、CSP の frame-ancestors HTTP 応答ヘッダーが 'none' に設定されます。この HTTP 応答ヘッダーを変更することはできません。
Lightning ページ
プラットフォームの一部として Salesforce が配信する Lightning ページでは、同じ組織内で Lightning ページをフレーム化できます。このページの URL には、lightning.force.com と 16 桁数字の形式の一意の識別子が含まれます。このようなページでは、CSP の frame-ancestors HTTP 応答ヘッダーが 'self' に設定されます。この HTTP 応答ヘッダーディレクティブを変更することはできません。
Experience Cloud サイトの Lightning ページのクリックジャック保護オプションについての詳細は、Experience Cloud サイトでこのトピックのセクションを参照してください。
Salesforce Classic ページ
外部サイトでは、Salesforce Classic 内で作成され、Salesforce によって配信されたページをフレーム化することはできません。Salesforce Classic ページの例として、[設定] ページや、Salesforce オブジェクトのページ (取引先の詳細ページなど) があります。ユーザーは Lightning モードでこれらのページを表示できますが、ページは Salesforce Classic を使用して作成されています。
[設定ページのクリックジャック保護を有効化] と [設定以外の Salesforce ページのクリックジャック保護を有効化] の 2 つの [セッションの設定] で、Salesforce が配信する Classic ページのフレーム化が禁止されます。これらの設定はデフォルトで有効になっており、無効にすることはできません。これらの設定を無効にするには、Salesforce カスタマーサポートにご連絡ください。
Visualforce ページ
デフォルトでは、Visualforce ページは iframe で読み込むことができます。ヘッダーがある Visualforce ページの場合、CSP の frame-ancestors HTTP 応答ヘッダーディレクティブはありません。
外部 Web サイトで Visualforce ページが iframe に読み込まれないようにするには、Visualforce ページをフレーム化するように信頼する外部ドメインを定義し、2 つのセッション設定を有効にします。詳細は、Salesforce ヘルプの「Visualforce ページのクリックジャック保護の有効化」および「インラインフレームの信頼済みドメインの指定」を参照してください。
ブラウザーはサードパーティの Cookie をブロックするため、認証された Visualforce ページをフレーム化するには追加の手順が必要です。『Visualforce Developer Guide』の「Put Visualforce Pages on External Domains」を参照してください。
Experience Cloud サイト
デフォルトでは、Experience Cloud サイトページでは、同じドメインとプロトコルセキュリティを持つ他のサイトページをフレーム化できます。このようなのページの CSP の frame-ancestors HTTP 応答ヘッダーディレクティブは 'self' に設定されます。
ページレベルの設定を使用して、信頼済み外部ドメインでのサイトページのフレーム化を許可できます。エクスペリエンスビルダーサイトページの場合、クリックジャック設定は [セキュリティとプライバシー] 設定にあります。Salesforce タブと Visualforce サイトの場合、クリックジャック設定はエクスペリエンスワークスペースの Force.com サイトのページ管理にあります。
詳細は、Salesforce ヘルプの「Experience Cloud サイトのクリックジャック保護の有効化」を参照してください。
Salesforce サイトおよび Force.com サイト
デフォルトでは、Salesforce サイトおよび Force.com サイト内のページでは、同じドメインとプロトコルセキュリティを持つ他のサイトページをフレーム化できます。このようなのページの CSP の frame-ancestors HTTP 応答ヘッダーディレクティブは 'self' に設定されます。
ページレベルのサイト設定を使用して、信頼済み外部ドメインでのサイトページのフレーム化を許可できます。各ページのクリックジャック保護レベルおよび信頼済みドメインを設定するには、Site.com Studio で設定を編集します。詳細は、Salesforce ヘルプの「Site.com でのクリックジャック保護の有効化」を参照してください。
アンケート
デフォルトでは、アンケートは、同じドメインとプロトコルセキュリティを持つページでフレーム化できます。CSP の frame-ancestors HTTP 応答ヘッダーディレクティブは 'self' に設定されます。
必要に応じて、組織のアンケートをフレーム化するように信頼する外部ドメインを定義できます。詳細は、Salesforce ヘルプの「インラインフレームの信頼済みドメインの指定」を参照してください。
開示およびコンプライアンスハブコネクタ
デフォルトでは、開示とコンプライアンスのハブコネクタは、同じドメインとプロトコルセキュリティのページでフレーム化できます。CSP の frame-ancestors HTTP 応答ヘッダーディレクティブは 'self' に設定されます。
必要に応じて、信頼する外部ドメインを定義して、組織の開示とコンプライアンスのハブコネクタをフレーム化できます。詳細は、Salesforce ヘルプの「インラインフレームの信頼済みドメインの指定」を参照してください。

