iOS
アプリケーション転送セキュリティ(ATS)
サーチ…
パラメーター
パラメータ | 詳細 |
---|---|
NSAppTransportSecurity | ATSの設定 |
NSAllowsArbitraryLoads | どこでもATSを無効にするには、 YES に設定します。 iOS 10以降、およびmacOS 10.12以降では、アプリケーションのInfo.plistファイルに次のいずれかのキーがあると、このキーの値は無視されます。NSAllowsArbitraryLoadsInMedia、NSAllowsArbitraryLoadsInWebContent、NSAllowsLocalNetworking |
NSAllowsArbitraryLoadsInMedia | AV FoundationフレームワークのAPIを使用してロードされたメディアに対してATSを無効にするには、 YES に設定します。 (iOS 10+、macOS 10.12+) |
NSAllowsArbitraryLoadsInWebContent | YES に設定すると、NSURLSession接続に影響を与えずに、アプリケーションのWebビュー( WKWebView 、 UIWebView 、 WebView )でATSを無効にします。 (iOS 10+、macOS 10.12+) |
NSAllowsLocalNetworking | 非修飾ドメインおよび.localドメインへの接続を無効にする場合は、 YES に設定します。 (iOS 10+、macOS 10.12+) |
NSExceptionDomains | 特定のドメインの例外を設定する |
NSIncludesSubdomains | YES に設定すると、選択したドメインのすべてのサブドメインに例外が適用されます。 |
NSRequiresCertificateTransparency | 既知のCTログからの有効な署名付き証明書トランスペアレンシー(CT)タイムスタンプがドメイン上のサーバー(X.509)証明書に対して提示されるようにするには、 YES に設定します。 (iOS 10+、macOS 10.12+) |
NSExceptionAllowsInsecureHTTPLoads | 選択したドメインでHTTPを許可するには、 YES に設定します。 |
NSExceptionRequiresForwardSecrecy | デフォルトはYES です。 Forward Secrecyを無効にし、より多くの暗号を受け入れる場合は、 NO に設定します。 |
NSExceptionMinimumTLSVersion | デフォルトはTLSv1.2 です。可能な値は以下のとおりですTLSv1.0 、 TLSv1.1 、 TLSv1.2 |
NSThirdPartyExceptionAllowsInsecureHTTPLoads | NSExceptionAllowsInsecureHTTPLoads と似ていますが、制御できないドメインの場合 |
NSThirdPartyExceptionRequiresForwardSecrecy | NSExceptionRequiresForwardSecrecy と似ていますが、あなたがコントロールできないドメイン |
NSThirdPartyExceptionMinimumTLSVersion | NSExceptionMinimumTLSVersion と似ていますが、あなたが制御できないドメイン |
備考
App Transport Securityは、iOSとmacOSのセキュリティ機能です。これは、アプリケーションが安全でない接続を確立するのを防ぎます。デフォルトでは、アプリケーションはセキュアなHTTPS接続しか使用できません。
アプリケーションがHTTP経由でサーバーに接続する必要がある場合、 Info.plist
で例外を定義する必要がありInfo.plist
。 (その詳細については、例を参照してください)
注: 2017年に、AppleはATSを実施します。つまり、 Info.plist
でATS例外が定義されているアプリをアップロードすることはできません。良い議論をすることができ、なぜHTTPを使わなければならないのかAppleに連絡することができ、例外を定義できる可能性があります。 (出典: WWDC 2016 - セッション706 )
App Transport Securityの設定の詳細については、 CocoaKeysのドキュメントを参照してください 。
すべてのHTTPコンテンツをロードする
Appleは、iOS 9を搭載したATSを新しいセキュリティ機能として導入し、アプリとWebサービスのプライバシーとセキュリティを向上させました。デフォルトでは、ATSはHTTPS以外のすべての要求に失敗します。本番環境ではこれが本当にうまくいくかもしれませんが、テスト中に迷惑になることがあります。
ATSは、 NSAppTransportSecurity
ディクショナリ(Xcode Info.plistエディタのApp Transport Security Settings
)を使用してターゲットのInfo.plist
ファイルでApp Transport Security Settings
します。すべてのHTTPコンテンツを許可するには、 Allow Arbitrary Loads
ブール値( NSAllowsArbitraryLoads
)を追加し、 YES
設定します。プロダクションアプリにはお勧めできません.HTTPコンテンツが必要な場合は、代わりに選択的に有効にすることをおすすめします。
HTTPコンテンツを選択的にロードする
すべてのHTTPコンテンツを有効にするのと同様に、すべての設定はApp Transport Security Settings
ます。 Exception Domains
辞書( NSExceptionDomains
)を最上位のATS設定に追加します。
すべてのドメインで、例外ドメインに辞書項目を追加します。ここで、キーは問題のドメインです。そのドメインのHTTPS要件を無効にするには、 NSExceptionAllowsInsecureHTTPLoads
をYES
に設定します。
エンドポイントにはSSLが必要です
iOS 9で導入されたすべてのエンドポイントは、HTTPS仕様に準拠している必要があります。
SSLを使用していないすべてのエンドポイントは、コンソールログの警告とともに失敗します。アプリケーションには、インターネット接続が失敗したように見えます。
例外を設定するにはInfo.plistファイルに次のものを置きます:
- 特定のドメイン(testdomain.com) のみを許可する:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
このような動作を可能にする鍵はNSExceptionAllowsInsecureHTTPLoads
です。この場合、アプリケーションは上記のドメイン(testdomain.com)のみにHTTP接続を許可し、他のすべてのHTTP接続をブロックします。
キーNSIncludesSubdomains
は、前述のドメイン(testdomain.com)のすべてのサブドメインも許可する必要があることを指定します。
- 任意のドメインを許可する:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
この場合、アプリは任意のドメインへのHTTP接続を許可します。 2017年1月1日現在、このフラグを使用するとApp Storeのレビューが徹底的に行われ、アプリの開発者は最初にこの例外を使用する必要がある理由を説明する必要があります。考えられる説明は次のとおりです。
- パーソナライズされた情報を含まない暗号化されたメディアコンテンツをロードするアプリケーション。
- 安全な接続を使用するようにアップグレードできないデバイスへの接続。
- 別のエンティティによって管理され、セキュアな接続をサポートしていないサーバーへの接続。