webapp online home generar compile app cordova https sencha-touch ios9

cordova - online - iOS9 ATS: ¿qué pasa con las aplicaciones basadas en HTML5?



phonegap home (4)

Cómo lidiar con SSL en iOS9, Una solución es hacer como:

Como dice Apple :

iOS 9 y OSX 10.11 requieren TLSv1.2 SSL para todos los hosts a los que planea solicitar datos, a menos que especifique dominios de excepción en el archivo Info.plist de su aplicación.

La sintaxis de la configuración de Info.plist tiene este aspecto:

<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>

Si su aplicación (un navegador web de terceros, por ejemplo) necesita conectarse a hosts arbitrarios, puede configurarla así:

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

Si tiene que hacer esto, probablemente sea mejor actualizar sus servidores para usar TLSv1.2 y SSL, si es que todavía no lo están haciendo. Esto debe considerarse una solución temporal.

A partir de hoy, la documentación preliminar no menciona ninguna de estas opciones de configuración de ninguna manera específica. Una vez que lo haga, actualizaré la respuesta para vincularla a la documentación relevante.

Aquí hay una Demo(Demo1)

De acuerdo con la documentación de https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-SW14 , Apple obliga a usar HTTPS a través de HTTP en iOS 9.

Seguridad de transporte de la aplicación

App Transport Security (ATS) permite que una aplicación agregue una declaración a su archivo Info.plist que especifica los dominios con los que necesita una comunicación segura. ATS evita la divulgación accidental, proporciona un comportamiento predeterminado seguro y es fácil de adoptar. Debe adoptar ATS lo antes posible, independientemente de si está creando una nueva aplicación o actualizando una existente.

Si está desarrollando una nueva aplicación, debe usar HTTPS exclusivamente. Si tiene una aplicación existente, debe usar HTTPS tanto como pueda ahora y cree un plan para migrar el resto de su aplicación lo antes posible.

¿Qué significa eso para las aplicaciones web, especialmente? ¿Sencha Touch y Cordova / PhoneGap? Mi aplicación web puede configurarse para cualquier dirección de servidor, por lo que no puedo incluirlas en una lista blanca en un archivo plist. ¿Esto solo será aplicable para aplicaciones que usan solicitudes nativas (a través de NSURLRequest, etc.)?


En realidad, Apple no obliga a nada, simplemente tienen una configuración de marco de trabajo predeterminado y, por lo tanto, fomentan una mayor seguridad para el beneficio de la aplicación y los usuarios de sus servicios. Lo que esto significa es que hasta que las herramientas híbridas integren los detalles en los productos existentes, se deben hacer ajustes a los archivos de configuración apropiados con cierta comprensión de los detalles (ver respuesta vinculada + comentario debajo) . Después de pasar tiempo con este problema exacto, sugiero que inicialmente se desarrolle localmente, permitiendo cargas arbitrarias y eludiendo el ATS. Si se necesita ATS para la aprobación de la tienda de aplicaciones, una vez que esté listo para comenzar las pruebas con un grupo más amplio de usuarios, active ATS (y las cargas arbitrarias se desactivan de forma explícita) y luego ajuste las excepciones a las configuraciones predeterminadas según sea necesario. La pregunta principal para cada dominio es si se deben permitir subdominios, ajustar las versiones de TLS según sea necesario y si también se debe permitir http inseguro. Mi aplicación tiene aproximadamente 20 dominios con la intención de pasar otras solicitudes a otras aplicaciones. Si fuera un navegador web, tendría una configuración específica para mis servicios (que yo controlo y conozco) y permitiría que el resto sea arbitrario.


Prueba esto: el cordova plugin add https://github.com/robertklein/cordova-ios-security.git

Agregará la siguiente parte al archivo *-Info.plist durante el proceso de compilación:

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


Si no está seguro de qué URL se conectará su aplicación o si se conecta a muchas URL, puede omitir el ATS (Seguridad de transporte de aplicaciones) agregando las siguientes claves en el archivo info.plist.

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