web-dev-qa-db-ja.com

iOS9 ATS:HTML5ベースのアプリはどうですか?

https://developer.Apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//Apple_ref/doc/uid/TP40016198-SW14 のドキュメントによると、 Apple iOS 9でHTTPS over HTTPを使用することを強制します。

App Transport Security

App Transport Security(ATS)を使用すると、アプリはInfo.plistファイルに宣言を追加して、安全な通信を必要とするドメインを指定できます。 ATSは偶発的な開示を防ぎ、安全なデフォルト動作を提供し、採用が容易です。新しいアプリを作成するか、既存のアプリを更新するかに関係なく、できるだけ早くATSを採用する必要があります。

新しいアプリを開発する場合は、HTTPSのみを使用する必要があります。既存のアプリがある場合は、現時点でできるだけHTTPSを使用し、アプリの残りの部分をできるだけ早く移行する計画を作成する必要があります。

それは、Webアプリケーション、特に。 Sencha TouchとCordova/PhoneGapベースのものですか? Webアプリはanyサーバーアドレスに構成できるため、plistファイルにそれらをホワイトリストに登録する方法はありません。これは、(NSURLRequestなどを介して)ネイティブリクエストを使用するアプリケーションにのみ適用されますか?

28
Dennis

アプリケーションがどのURLに接続するかわからない場合、または多くのURLに接続する場合は、info.plistファイルに次のキーを追加して、ATS(App Transport Security)をバイパスできます。

<key>NSAppTransportSecurity</key> 
<dict>
    <key>NSAllowsArbitraryLoads</key> <true/> 
</dict>
15

これを試してください:cordova plugin add https://github.com/robertklein/cordova-ios-security.git

ビルドプロセス中に*-Info.plistファイルに次の部分を追加します。

<key>NSAppTransportSecurity</key> 
<dict>
  <key>NSAllowsArbitraryLoads</key> <true/> 
</dict>
17
robert.little

IOS9でSSLに対処する方法、1つの解決策は次のようにすることです。

Apple と言うと: enter image description hereenter image description here

enter image description here

iOS 9およびOSX 10.11では、アプリのInfo.plistファイルで例外ドメインを指定しない限り、データを要求する予定のすべてのホストにTLSv1.2 SSLが必要です。

Info.plist構成の構文は次のようになります。

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>yourserver.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow insecure HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>

アプリケーション(たとえば、サードパーティのWebブラウザー)が任意のホストに接続する必要がある場合、次のように構成できます。

<key>NSAppTransportSecurity</key>
<dict>
    <!--Connect to anything (this is probably BAD)-->
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

これを行う必要がある場合は、TLSv1.2とSSLを使用するようにサーバーを更新することをお勧めします(まだ行っていない場合)。これは一時的な回避策と見なされる必要があります。

今日の時点で、プレリリースのドキュメントでは、これらの構成オプションについて特定の方法で言及していません。それができたら、関連するドキュメントへのリンクに回答を更新します。

デモ(Demo1)

7
ElonChan

Appleは実際には何も強制せず、単にデフォルトに設定されたフレームワークを持っているだけなので、アプリとそのサービスのユーザーの利益のためにセキュリティを強化します。これが意味することは、ハイブリッドツールが詳細を既存の製品に統合するまで、調整を行う必要があることです 詳細をある程度理解した適切な構成ファイル(リンクされたanswer + commentを参照) この問題に時間を費やした後、最初にローカルで開発して任意の負荷を許可し、ATSをバイパスすることをお勧めします。アプリストアの承認にATSが必要な場合、より広範なユーザーグループでテストを開始する準備ができたら、ATSをオン(および任意のロードを明示的にオフ)にし、必要に応じて例外をデフォルト設定に調整します。各ドメインに求める主な質問は、サブドメインを許可するか、必要に応じてTLSバージョンを調整するか、安全でないhttpも許可するかどうかです。私のアプリには20個ほどのドメインがあり、他のリクエストを他のアプリに渡すことを意図しています。 Webブラウザーの場合は、サービスに特定の設定(制御および認識)があり、残りは任意に設定できます。

0
jimmont