• Saltar a la navegación principal
  • Saltar al contenido principal

CFE APPS by Sergio Becerril

Aprende a programar en Swift | Cursos de Swift online

  • CURSO Swift & UIKit – SwiftUI
  • Blog
  • YouTube
  • Acerca de

App Transport Security o ATS en iOS 9

09/09/2015 por Sergio Becerril 2 comentarios

Estas cosas son divertidas.

Cuándo estás seguro de que algo funciona, y de repente, en una nueva versión de iOS, deja de funcionar, o al menos no funciona igual.

Si tu aplicación hace uso de NSURLSession debes conocer App Transport Security o ATS en iOS 9

HTTPS

Apple recomienda a partir de ahora usar HTTPS exclusivamente, y para ello implementa App Transport Security o ATS en iOS 9, que básicamente lo que hace es securizar las conexiones de tu aplicación.

Esto a simple vista nos debería dar igual, pero si usas conexiones a servidores, lo más habitual hoy en día, simplemente tu App no funcionará.

Te dará un error parecido a este:

Error Domain=NSURLErrorDomain Code=-1200 «An SSL error has occurred and a secure connection to the server cannot be made.»

Configurar App Transport Security

Hay varias soluciones a esto, la más fácil, aunque también la menos recomendable, es anular en cierto modo ATS, para ello hay que incluir una Key en nuestro archivo Info.plist

Es la siguiente:

<key>NSAppTransportSecurity</key>

<dict>

<key>NSAllowsArbitraryLoads</key>

<true/>

</dict>

Debería quedar algo así:

App-Transport-Security-o-ATS-en-iOS-9

Incluir excepciones

Podemos también hacer excepciones, y que en estas URL´S no se tenga en cuenta esta seguridad extra que Apple quiere imponer en sus conexiones de red.

Tendríamos que incluir otras Keys dentro de nuestro archivo Info.plist.

Por ejemplo para incluir una excepción de un dominio podemos usar la Key:

<dict>

<key>NSExceptionDomains</key>

<dict> <key>tuservidor.com</key>

<dict>

</dict>

</dict>

También podemos usar Keys para incluir subdominios:

<dict>

<key>NSIncludesSubdomains</key>

<true/>

</dict>

Lo mejor, como suele ser habitual, es consultar la documentación oficial de Apple, dónde podréis encontrar toda la información al respecto.

En mi caso, en una App desarrollada para un cliente, yo puse la Key <key>NSAllowsArbitraryLoads</key> que básicamente desactiva por completo ATS y permite todo tipo de conexiones, sí, es menos seguro que usarlo, pero tampoco mi aplicación requiere una seguridad extra, no es la App de un banco 😉

Déjame un comentario si quieres decirme algo.

Archivado en: Programar con iOS Etiquetado con: App Transport Security, iOS9, Programar con iOS

Interacciones con los lectores

Comentarios

  1. patispawn dice

    15/09/2015 en 20:30

    Sergio Becerril gracias por el tip sin embargo he escuchado que así desactives esa directiva al momento de enviarla para que la publiquen en la Appstore, ellos la rechazan de una vez. Tu sabes si es una exageración o si es cierto??
    Te agradezco, soy estudiante tuyo así que mis felicitaciones eres un gran profe!!!

    Responder
    • Sergio Becerril dice

      15/09/2015 en 23:11

      Hola,

      Gracias por tus palabras patispawn.

      Respecto a tu duda, en unos cuantos días te podré decir.

      Estoy terminando la App de un cliente en la cual hago uso de esta funcionalidad, veremos si la aprueban o la rechazan.

      Gracias por visitar mi Blog y por comentar 😉

      Un abrazo.
      Sergio Becerril

      Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Copyright © 2023 · Business Pro en Genesis Framework · WordPress · Iniciar sesión