iOS 10、macOS 10.12 の App Transport Security (ATS) について

  • 7
    いいね
  • 0
    コメント

iOS 10 の App Transport Security (ATS) について完全にドハマリしたので、Apple の Information Property List Key Reference の App Transport Security 部分の各キーについてを日本語意訳します。

ドハマリした話はこちらからどうぞ。

NSAllowsArbitraryLoads

If set to YES, disables all ATS restrictions for all network connections, apart from the connections to domains that you configure individually in the optional NSExceptionDomains dictionary. Default value is NO.

In iOS 10 and later, and macOS 10.12 and later, the value of this key is ignored if any of the following keys are present in your app’s Info.plist file:

  • NSAllowsArbitraryLoadsForMedia
  • NSAllowsArbitraryLoadsInWebContent
  • NSAllowsLocalNetworking

Note: Setting this key’s value to YES triggers App Store review and requires justification.

YES に設定すると、NSExceptionDomains ディクショナリで個別に設定するドメインへの接続を除き、全てのネットワーク接続に対して全ての ATS 制限が無効になります。デフォルトは NO です。

iOS 10 以降、および macOS 10.12 以降では、App の Info.plist ファイルに次のキーがある場合、このキーの値は無視されます。

  • NSAllowsArbitraryLoadsForMedia
  • NSAllowsArbitraryLoadsInWebContent
  • NSAllowsLocalNetworking

注: このキーの値を YES に設定すると、App Store のレビュー時に正当な理由が求められます。

NSAllowsArbitraryLoadsForMedia

If set to YES, disables all ATS restrictions for media that your app loads using the AV Foundation framework. Employ this key only for loading media that are already encrypted, such as files protected by FairPlay or by secure HLS, and that do not contain personalized information. Default value is NO.

If you add this key to your Info.plist file, then, irrespective of the value of the key, ATS ignores the value of the NSAllowsArbitraryLoads key.

Available starting in iOS 10.0 and macOS 10.12.

Note: Setting this key’s value to YES triggers App Store review and requires justification.

YES に設定すると、AV Foundation framework を使用して App が読み込むメディアの全ての ATS 制限が無効になります。このキーは、FairPlay やセキュア HLS によって保護されている、情報を含まないファイルなど、既に暗号化されているメディアをロードする場合に使用されます。デフォルトは NO です。

Info.plist ファイルにこのキーを追加すると、キーの値にかかわらず、ATS は NSAllowsArbitraryLoads キーの値を無視します。

iOS 10.0 と macOS 10.12 から利用可能です。

注: このキーの値を YES に設定すると、App Store のレビュー時に正当な理由が求められます。

NSAllowsArbitraryLoadsInWebContent

If set to YES, disables all ATS restrictions for requests made from web views. This lets your app use an embedded browser that can display arbitrary content, without disabling ATS for the rest of your app. Default value is NO.

If you add this key to your Info.plist file, then, irrespective of the value of the key, ATS ignores the value of the NSAllowsArbitraryLoads key.

Available starting in iOS 10.0 and macOS 10.12.

Note: Setting this key’s value to YES triggers App Store review and requires justification.

YES に設定すると、Web View からの要求に対する全ての ATS 制限が無効になります。これによって、App で ATS を無効にすること無く任意のコンテンツを表示できる埋め込みブラウザを使用できます。デフォルトは NO です。

Info.plist ファイルにこのキーを追加すると、キーの値にかかわらず、ATS は NSAllowsArbitraryLoads キーの値を無視します。

iOS 10.0 と macOS 10.12 から利用可能です。

注: このキーの値を YES に設定すると、App Store のレビュー時に正当な理由が求められます。

NSAllowsLocalNetworking

If set to YES, allows loading of local resources without disabling ATS for the rest of your app. Default value is NO.

YES に設定すると、残りの App で ATS を無効にすることなくローカルリソースを読み込むことができます。 デフォルト値は NO です。

NSExceptionDomains

Optionally include this dictionary to configure ATS for one or more named domains.

If you add this key to your NSAppTransportSecurity dictionary, any domains you then name within the dictionary obtain the default, full ATS protections—irrespective of the value you set for the global NSAllowsArbitraryLoads key. Subkeys of a domain-name key then let you alter that domain’s ATS protections from its defaults.

オプションでこの辞書に1つまたは複数の名前付きドメインのための ATS 設定を行います。

このキーを NSAppTransportSecurity ディクショナリに追加すると、NSAllowsArbitraryLoads キーに設定された値にかかわらず、ディクショナリ内で設定したドメインがデフォルトである完全な ATS 制限を受けます。ドメイン名のキーのサブキーでは、そのドメインの ATS 制限をデフォルトから変更できます。

<domain-name-string>

A domain name string, identifying a domain for which you want to specify a connection configuration. You can add multiple instances of this key, letting you name any number of domains in the one NSExceptionDomains dictionary. Configure each <domain-name-string> dictionary to contain one or more of the following child keys:

接続設定を指定するドメインを識別するドメイン名の文字列です。このキーのインスタンスを複数追加して、1つの NSExceptionDomains ディクショナリに任意の数のドメイン名を付けることができます。それぞれの <domain-name-string> ディクショナリに、次の1つまたは複数の子キーを含めるように設定します。

NSIncludesSubdomains

If set to YES, applies a named domain’s ATS configuration to all of its subdomains. Default value is NO.

YES に設定されている場合は、指定されたドメインの ATS 設定をすべてのサブドメインに適用します。デフォルト値は NO です。

NSExceptionAllowsInsecureHTTPLoads

If set to YES, allows insecure HTTP loads for the named domain, but does not change Transport Layer Security (TLS) requirements and does not affect HTTPS loads for the named domain. Default value is NO.

Note: Setting this key’s value to YES triggers App Store review and requires justification.

YES に設定されていると、指定されたドメインに対して安全でない HTTP 通信を許可しますが、TLS (Transport Layer Security) 要件は変更されず、指定ドメインの HTTPS 通信には影響しません。デフォルト値は NO です。

注: このキーの値を YES に設定すると、App Store のレビュー時に正当な理由が求められます。

NSExceptionMinimumTLSVersion

Specifies the minimum TLS version for network connections for the named domain, allowing connection using an older, less secure version of Transport Layer Security.

Note: Use of this key triggers App Store review and requires justification.

指定されたドメインのネットワーク接続の最小 TLS バージョンを指定します。これにより、より安全ではない旧バージョンの Transport Layer Security を使用した接続が可能になります。

注: このキーの値を設定すると、App Store のレビュー時に正当な理由が求められます。

NSExceptionRequiresForwardSecrecy

If set to NO, allows TLS ciphers, for the named domain, that do not support perfect forward secrecy (PFS). Default value is YES.

NO に設定されている場合は、指定されたドメインに対して Perfect Forward Secrecy (PFS) をサポートしない TLS を許可します。デフォルト値は YES です。

NSRequiresCertificateTransparency

If set to YES, requires valid, signed Certificate Transparency timestamps for server certificates for the named domain. Default value is NO.

YES に設定されている場合は、指定されたドメインのサーバー証明書に有効な署名付き証明書透過タイムスタンプが必要です。デフォルト値は NO です。