3.4.3.4 APEXでのコンテンツ・セキュリティ・ポリシー(CSP)の使用

アプリケーションのCSPを構成する方法について学習します。

APEXでは、HTTPレスポンス・ヘッダーを使用することでCSPがサポートされます。アプリケーション・レベルでCSPを有効にすると、アプリケーション全体が厳密なリソース・ロード・ルールに準拠し、よりセキュアで堅牢なアプリケーションを構築できるようになります。

3.4.3.4.1 アプリケーションでのCSPの有効化

アプリケーションのCSPを有効にするには、セキュリティ属性を編集します。

Oracle APEXでは、HTTPレスポンス・ヘッダーを使用することでCSPがサポートされます。アプリケーション・レベルでCSPを有効にすると、アプリケーション全体が厳密なリソース・ロード・ルールに準拠し、よりセキュアで堅牢なアプリケーションを構築できるようになります。

APEXアプリケーションでCSPを有効にするには:

  1. ワークスペースのホームページで「アプリケーション・ビルダー」アイコンをクリックします。
  2. アプリケーションを選択します。
    アプリケーションのホームページが表示されます。
  3. アプリケーションのホームページから、セキュリティ・ページに、次の2通りの方法でアクセスできます。
    • 「アプリケーション定義の編集」ボタン:
      1. アプリケーション名の右側にある「アプリケーション定義の編集」をクリックします。

      2. 「セキュリティ」タブをクリックします。

    • 「共有コンポーネント」から:
      1. 「共有コンポーネント」をクリックします。

      2. 「セキュリティ」で、「セキュリティ属性」をクリックします。

    セキュリティ属性の編集ページが表示されます。

  4. 「ブラウザ・セキュリティ」、「HTTPレスポンス・ヘッダー」 - APEXが各レスポンスで送信する必要がある追加のアプリケーション固有のHTTPヘッダーのうち、他の方法ではサポートされないものを入力します。次のいずれかを選択します:
    • Content-Security-Policy - セキュリティ・ポリシーを強制適用し、ルールに準拠していないリソースまたはアクションをブロックします。違反が発生するとコンテンツがブロックされ、アプリケーションがセキュリティのベスト・プラクティスに準拠していることが保証されます。

      Content-Security-Policy: default-src 'self' #APEX_CSP_NONCE# 'unsafe-hashes' #APEX_CSP_HASHES#; object-src 'none'; img-src 'self' data:;
    • Content-Security-Policy-Report-Only - CSP設定を強制適用せずにテストできます。違反をブロックせずにレポートが生成されるので、アプリケーションを中断することなく問題をモニターできます。このヘッダーは、本番環境でポリシーを強制適用する前にテストして調整するのに最適です。

      Content-Security-Policy-Report-Only: default-src 'self' #APEX_CSP_NONCE# 'unsafe-hashes' #APEX_CSP_HASHES#; object-src 'none'; img-src 'self' data:;

3.4.3.4.2 Content-Security-PolicyとContent-Security-Policy-Report-Onlyについて

Content-Security-PolicyヘッダーとContent-Security-Policy-Report-Onlyヘッダーについて学習します。

コンテンツ・セキュリティ・ポリシー(CSP)ヘッダーを実装するとき、Content-Security-PolicyヘッダーとContent-Security-Policy-Report-Onlyヘッダーのいずれかを選択できます。

CSPヘッダーを追加すると:

  • CSPはアプリケーション全体でグローバルに適用されます。

  • 指定されたポリシーに一致するリソースのみをロードできます。

  • 明示的に許可されていないスクリプトまたはリソース(たとえば、適切なnonce/ハッシュのないインライン・スクリプト)は、ブラウザによってブロックされます。

    ヒント:

    これにより、CSPに準拠していない場合に特定の機能(またはプラグイン)が最初は機能しない可能性があるため、テストと適応が必要になる場合があります。

CSPを有効にすることで、クライアント側の攻撃に対するアプリケーションの強化に向けて重要な一歩を踏み出すことになります。ベスト・プラクティスを強制適用し、コードベースがクリーンかつセキュアで信頼できる状態を維持します。

3.4.3.4.3 サポートされている置換文字列

CSPヘッダーでサポートされている置換文字列について学習します。

CSPヘッダーで使用可能な置換文字列は次のとおりです:

  • #APEX_CSP_NONCE# - HTTPヘッダーに使用され、現在のページ・リクエストのnonce値('nonce-random123'など)に解決されます。nonceを持つインライン・スクリプトおよびスタイルを許可するために使用されます。
  • #APEX_CSP_HASHES# - 承認されたインライン・スクリプトまたはスタイルのハッシュに解決されます。
  • #APEX_DISPLAY_NONE# - display: noneに解決され、要素を動的に非表示にします。コンテンツが完全にロードされる前に表示/非表示を管理するためによく使用されます。
  • #APEX_CSP_NONCE_ATTRIBUTE# - nonce値(nonce="random123"など)を含むhtml属性。
  • #APEX_CSP_NONCE_VALUE# - 正確なnonce値。