iOS9 ATS:基于HTML5的应用程序呢?

Den*_*nis 28 https sencha-touch cordova ios9

根据https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-SW14中的文档,Apple强制使用HTTPS over HTTP在iOS 9中.

App Transport Security

应用程序传输安全性(ATS)允许应用程序向其Info.plist文件添加声明,该文件指定需要与其进行安全通信的域.ATS可防止意外泄露,提供安全的默认行为,并且易于采用.无论您是创建新应用程序还是更新现有应用程序,都应尽快采用ATS.

如果您正在开发新应用,则应该专门使用HTTPS.如果您有现有应用,则应尽可能多地使用HTTPS,并创建一个计划,以便尽快迁移其余应用.

这对Web应用程序意味着什么,尤其是 Sencha Touch和Cordova/PhoneGap基于?我的Web应用程序可以配置为任何服务器地址,因此我无法在plist文件中将它们列入白名单.这仅适用于使用本机请求的应用程序(通过NSURLRequest等)吗?

小智 17

试试这个: cordova plugin add https://github.com/robertklein/cordova-ios-security.git

它将*-Info.plist在构建过程中将以下部分添加到文件中:

<key>NSAppTransportSecurity</key> 
<dict>
  <key>NSAllowsArbitraryLoads</key> <true/> 
</dict>
Run Code Online (Sandbox Code Playgroud)


Ras*_*ick 15

如果您不确定应用程序将连接哪个URL,或者您连接到多个URL,则可以通过在info.plist文件中添加以下键来绕过ATS(App Transport Security).

<key>NSAppTransportSecurity</key> 
<dict>
    <key>NSAllowsArbitraryLoads</key> <true/> 
</dict>
Run Code Online (Sandbox Code Playgroud)

  • 作为一个抬头 - 如果你正在开发一个混合应用程序(例如cordova)而不是你可能需要添加这个,如果你正在测试localhost (2认同)

Elo*_*han 7

如何在iOS9中处理SSL,一个解决方案是这样做:

正如苹果所说: 在此输入图像描述 在此输入图像描述

在此输入图像描述

除非您在应用的Info.plist文件中指定例外域,否则iOS 9和OSX 10.11需要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>
Run Code Online (Sandbox Code Playgroud)

如果您的应用程序(例如第三方Web浏览器)需要连接到任意主机,您可以像这样配置它:

<key>NSAppTransportSecurity</key>
<dict>
    <!--Connect to anything (this is probably BAD)-->
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

如果您不得不这样做,最好更新您的服务器以使用TLSv1.2和SSL,如果他们还没有这样做的话.这应该被视为临时解决方法.

截至今天,预发布文档没有以任何特定方式提及任何这些配置选项.一旦完成,我将更新答案以链接到相关文档.

这是一个演示(演示1)