ios - ¿Cómo puedo agregar NSAppTransportSecurity a mi archivo info.plist?
objective-c xcode (13)
https://developer.apple.com/videos/wwdc/2015/?id=711 @ 5: 55
Parece que no puedo agregar esto a mi info.plist. No tiene valor. Estoy ejecutando XCode Versión 7.0 beta (7A121l) y probando en iOS9.
Debido a que no puedo declarar específicamente qué URL quiero, como se ve en el video, sigo recibiendo "App Transport Security ha bloqueado una carga de recursos HTTP (http: //) en texto claro ya que no es seguro. Las excepciones temporales se pueden configurar a través de la aplicación Archivo Info.plist "errores.
Sin embargo, parece que no puedo configurarlo. ¿Algunas ideas?
Eso no estaba funcionando para mí, pero esto funcionó:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
Para explicar un poco más sobre la respuesta de ParaSara: la seguridad del transporte de aplicaciones se volverá obligatoria y tratar de desactivarla puede hacer que su aplicación sea rechazada.
Como desarrollador, puede desactivar la seguridad de App Transport si su código de red no funciona y desea continuar con otros desarrollos antes de solucionar cualquier problema. Digamos que en un equipo de cinco, cuatro pueden continuar trabajando en otras cosas mientras uno soluciona todos los problemas. También puede desactivar la seguridad de App Transport como una herramienta de depuración si tiene problemas de red y desea verificar si son causados por la seguridad de App Transport. Tan pronto como sepa, debe volver a encenderlo de inmediato.
La solución que debe usar en el futuro es no usar http en absoluto, a menos que use un servidor de terceros que no sea compatible con https. Si su propio servidor no es compatible con https, Apple tendrá un problema con eso. Incluso con servidores de terceros, no apostaría a que Apple lo acepta.
Lo mismo con las diversas comprobaciones de seguridad del servidor. En algún momento, Apple solo aceptará excepciones justificables.
Pero sobre todo, considere esto: está poniendo en peligro la privacidad de sus clientes. Eso es un gran no-no en mi libro. No hagas eso. Arregle su código, no solicite permiso para ejecutar código inseguro.
Una mala noticia para los desarrolladores que usan NSAppTransportSecurity.
UPDATE:
[Apple will require HTTPS connections for iOS apps by the end of 2016]
XCODE 8, Swift 3: debe agregar una fila: **
"Configuración de seguridad de transporte de aplicaciones"
** en la lista de propiedades info.plist inside information.
Xcode 8.2, iOS 10
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Xcode 9.2, Swift 4, esto funciona para mí.
<key>App Transport Security Settings</key>
<dict>
<key>Allow Arbitrary Loads</key>
<true/>
</dict>
prueba con esto --- funcionó para mí en Xcode-beta 4 7.0
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
También una opción más, si desea deshabilitar ATS puede usar esto:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
Pero esto no se recomienda en absoluto. El servidor debe tener los certificados SSL y para que no haya fugas de privacidad.
En la línea de comandos de mac shell , use el siguiente comando:
plutil -insert NSAppTransportSecurity -xml "<array><string> hidden </string></array>" [location of your xcode project]/Info.plist
El comando agregará todos los valores necesarios en su archivo plist.
Respuesta de actualización (después de wwdc 2016):
IOS apps will require secure HTTPS connections by the end of 2016
App Transport Security, o ATS, es una característica que Apple introdujo en iOS 9. Cuando ATS está habilitado, obliga a una aplicación a conectarse a servicios web a través de una conexión HTTPS en lugar de HTTP no seguro.
Sin embargo, los desarrolladores aún pueden desactivar ATS y permitir que sus aplicaciones envíen datos a través de una conexión HTTP como se menciona en las respuestas anteriores. A finales de 2016, Apple hará que ATS sea obligatorio para todos los desarrolladores que esperan enviar sus aplicaciones a la App Store. link
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>uservoice.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>com</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>net</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>org</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
Esto permitirá conectarse a .com .net .org