モバイルアプリでアクセス可能なドメインを設定する
モバイルアプリがアクセス可能なドメインのホワイトリストを作成すると、モバイルアプリのセキュリティを強化することができます。ホワイトリストを定義するには、access
拡張構成エントリを使用します。これにより、HTTP接続を使用する場合、ホワイトリストに登録されていないドメインはすべてブロックされます。
モバイルアプリでアクセス可能なドメインのリストを定義するには、以下の手順を実行します。
-
Service Studioでモジュール要素(モジュールツリーのルート項目)を選択し、次にプロパティエディタで[Extensibility Configurations]をダブルクリックします。以下のプロパティエディタウィンドウが開きます。
-
JSONテンプレートに従って新しいエントリを追加し、モバイルアプリで許可するドメインおよびサブドメインを設定します。拡張構成をすでに定義している場合は、必要に応じて調整を行います。各エントリには、許可されたURLスキーマおよび許可されたドメインまたはサブドメインを含む[
origin
]フィールドを1つ以上設定する必要があります。ワイルドカードの使用が可能です。以下の例で、最初のエントリは、HTTPによる
assets.mycompany.com
との通信をモバイルアプリに許可します。また、2番目のエントリは、google.com
のすべてのサブドメインへの接続をアプリに許可します。それ以外のドメインへのHTTP接続はすべて拒否されます。{ "access": [{ "origin": "http://assets.mycompany.com" },{ "origin": "http://*.google.com" }] }
-
アクセス可能なドメインを定義した後、変更を反映させるには、ユーザーのデバイスに更新済みのモバイルアプリのビルドがインストールされている必要があります。
デフォルト構成
JSONでaccess
拡張構成エントリが定義されていない場合、デフォルトのアクセス可能なドメインは、以下の単一リスト要素で定義したエントリの結果と一致します。
{ "access": [{ "origin": "*" }] }
つまり、具体的なプロトコル(HTTP/HTTPS)やドメイン名にかかわらず、デフォルトではすべてのドメインがアクセス可能になります。
HTTP接続の拒否
HTTP接続を使用する場合は、拡張構成エントリを使用してアクセス可能なドメインを制限するのが有効です。HTTPSでアクセスするドメインはすでに安全な伝送チャネルを使用しているため、HTTPSによってご利用のアプリケーションはあらゆるドメインにアクセスできます。HTTPS接続を使用している場合に読み込むコンテンツの制限を定義するには、コンテンツセキュリティポリシーディレクティブの適用を検討してください。
ドメインにかかわらずHTTP接続をすべて拒否するには、次の例のような構成を使用します。
{ "access": [{ "origin": "https://*/*" }] }
上記の例では、具体的なドメインやURLにかかわらず、HTTPSプロトコルを使用するオリジンのみがアクセス許可されると宣言することで、あらゆるドメインへのHTTP接続をすべて効果的に拒否できます。
オプションフィールド
iOSにのみ適用されます。
iOS用とAndroid用のいずれにおいても、各リスト要素で唯一必須のフィールドは、許可されるURLスキーマとドメインを含む[origin
]フィールドです。このフィールドがないと、モバイルアプリは正常に生成できません。
以下のテーブルは、特定のiOS構成で利用可能なその他のオプションフィールドの一覧です。
フィールド名 | 適用対象 | 許可されるオリジン値 | デフォルト値 |
---|---|---|---|
minimum-tls-version |
iOS 9+ | Any | TLSv1.2 |
requires-forward-secrecy |
iOS 9+ | Any | true |
requires-certificate-transparency |
iOS 10+ | Any | false |
allows-arbitrary-loads-for-media |
iOS 10+ | * |
false |
allows-arbitrary-loads-in-web-content |
iOS 10+ | * |
false |
allows-local-networking |
iOS 10+ | * |
false |
最後の3つのフィールドは、[origin
]フィールドの値に*
を含むaccess
リスト要素でのみ使用が可能です。ご注意ください。
これらのフィールドの詳細については、関連するCordovaのドキュメント(「ドメインホワイトリストガイド」)およびAppleのドキュメント(「アプリの伝送セキュリティ」)のトピックをそれぞれご覧ください。
アクセス可能なドメインに関するJSONテンプレート
{ "access": [ // 以下のエントリを使用して、モバイルアプリが接続できるドメインを定義 { "origin": "<アクセス可能なドメインのプロトコルとURL>", "minimum-tls-version": "<最低限必要なTLSバージョン>", "requires-forward-secrecy": "<true_or_false>", "requires-certificate-transparency": "<true_or_false>" }, // 以下のテンプレートを使用してこれら3つのiOS専用フィールドを設定 { "origin": "*", "allows-arbitrary-loads-for-media": "<true_or_false>", "allows-arbitrary-loads-in-web-content": "<true_or_false>", "allows-local-networking": "<true_or_false>" } ] }