コンテンツセキュリティポリシーを適用する
Web上で増加し続ける攻撃を防ぐため、OutSystemsで開発したアプリケーションに、コードインジェクション攻撃への対抗策であるCSP(コンテンツセキュリティポリシー)を使用します。CSPとは、基本的にはブラウザが読み込みを認められている許可済みのコンテンツ出元を宣言する標準的な方法です。
特定のHTTPヘッダーでブラウザに送られるディレクティブを使用して構成されます。これにより、ブラウザがアプリケーションのページを実行する際に、リソースをどの場所やタイプから読み込めばよいかわかります。
すべての環境にCSPを設定することをお勧めします。まず、1つの環境のすべてのアプリケーションで許可するソースを指定します。次に必要に応じてアプリケーションごとにソースを指定して、一般構成を上書きします。
このCSP構成は、OutSystemsで開発したWebアプリケーションおよびモバイルアプリケーションの両方で有効です。
すべての環境にCSPを設定するには、インフラの管理コンソール(LifeTime)を使用します。
- [Infrastructure]セクションに移動して、すべての環境を表示します。
- 1つの環境で[Environment Security]オプションを選択します。
- CSPを有効化します。
- 1行につき1つ値を入れる形式でディレクティブを構成します。
アプリケーションにCSPを設定するには、以下の手順を実行します。
- LifeTimeで[Applications]セクションを選択して、アプリケーションを選択します。
- [Security Settings]オプションを選択します。
- ドロップダウンリストで、設定を適用する環境を選択します。
- CSPを有効化します。
- 1行につき1つ値を入れる形式でディレクティブを構成します。
LifeTimeをインストールしていない場合は、管理コンソール(Service Center)を使用して各環境にCSPを設定します。
- [Administration]セクションで、[Security]オプションを選択します。
- CSPを有効化します。
- 1行につき1つ値を入れる形式でディレクティブを構成します。
アプリケーションにCSPを設定するには、以下の手順を実行します。
- [Factory]セクションを選択して、アプリケーションを選択します。
- [Security]タブを選択します。
- CSPを有効化します。
- 1行につき1つ値を入れる形式でディレクティブを構成します。
CSPを設定すると、その環境の管理コンソール(Service Center)を使用して、ブロックされたリソースを監視することができます。
- [Monitoring]セクションに移動して、[Errors]オプションを選択します。
- CSPReportにeSpaceフィルタを設定して、CSPがブロックしたリソースのみを表示します。
CSPを設定する際には、以下の構成ミスにご注意ください。
-
ポリシーの指定漏れ: アプリケーションで使用するソースすべてを許可するポリシーを必ず設定してください。指定漏れがあった場合、ユーザーにビデオが表示されなかったりたり、CSSが適用されなかったりする可能性があります。
-
過剰に寛大なポリシー: ドメインリストで「*」を使用してあらゆる場所からのリソースの読み込みを許可する場合、特にご注意ください。ハッカーがアプリケーションのリンク、スクリプト、その他のリソースを悪用して、ユーザーを悪意あるページにリダイレクトする場合があります。
ディレクティブの参照
OutSystemsでCSPを設定する際に利用可能なディレクティブは、以下の表のとおりです。
ディレクティブ | 説明 | デフォルト値 |
---|---|---|
Base-uri | アプリケーション画面のベースURLとして使用できるドメイン。 許可されるソース表現: self 。 |
self |
Child-src | アプリケーションがフレームの組み込みを許可されているドメイン。 許可されるソース表現: self 、* 。 |
self |
Connect-src | アプリケーションがスクリプトインターフェイスを使用してリソースを読み込むことが許可されているドメイン。 許可されるソース表現: self 、* 。 |
self |
Default-src | アプリケーションがデフォルトでリソースの読み込みを許可されているドメイン。 object-srcやimg-srcなど未定義のリソース型専用ディレクティブは、この設定を継承します。 許可されるソース表現: self 、data: 、* 。 |
self |
Font-src | アプリケーションがフォントの読み込みを許可されているドメイン。 許可されるソース表現: self 、data: 、* 。 |
self data: |
Img-src | アプリケーションが画像の読み込みを許可されているドメイン。 許可されるソース表現: self 、data: 、* 。 |
self data: |
Media-src | アプリケーションがメディアファイルの読み込みを許可されているドメイン。 許可されるソース表現: self 、data: 、* 。 |
- |
Object-src | アプリケーションがオブジェクト(<object> 、<embed> 、<applet> 要素用)の読み込みを許可されているドメイン。許可されるソース表現: self 、* 。 |
- |
Plugin-types | ユーザーのブラウザが呼び出し可能な有効なプラグイン。 | - |
Script-src | アプリケーションがスクリプトの読み込みを許可されているドメイン。 許可されるソース表現: self 、data: 、* 。 |
self |
Style-src | アプリケーションがスタイルの読み込みを許可されているドメイン。 許可されるソース表現: self 、data: 、* 。 |
self |
Frame-ancestors | フレームにアプリケーションを組み込むことが許可されているドメイン。 許可されるソース表現: self 、* 。 |
self |
Report-to | コンテンツセキュリティ違反が報告されるURI。 | <internal> |
Other directives | CSPのヘッダーに付加されるその他のディレクティブ。 | - |