Probablemente esté justificado, porque con la velocidad a la que aumenta el poder de cómputo, el cifrado antiguo se debilita rápidamente, lo que una vez se consideró "demasiado difícil de romper" se vuelve factible.
Apple tiene el hábito de educar a sus usuarios / desarrolladores, que también tienden a ser perezosos y descuidan estos problemas, por lo que probablemente sea algo bueno, especialmente cuando las soluciones son fáciles de implementar.
Hay algunos casos en los que ATS debe estar deshabilitado, pero la mayoría de las veces se puede solucionar sin deshabilitar ATS -
A) El backend no admite conexiones HTTPS
Configure su backend para admitir conexiones HTTPS, no hay razón para usar conexiones no seguras.
B) El backend utiliza un certificado autofirmado
Firme con una autoridad de certificación conocida o fije su certificado raíz autofirmado. Puede usar AFNetworking
para fijar su archivo CER.
C) El backend no admite TLS v1.2 con el secreto de reenvío
Actualice su servidor para admitir esos cifrados. Busque en la web cómo hacerlo en su servidor web.
D) La aplicación se comunica con un tercero que no cumple con ATS
Agregue una excepción para ese sitio web específico. Compruebe si el punto final es compatible con el esquema HTTPS, los protocolos TLS v1.2
y los conjuntos de cifrado Forward Secrecy
, si falta alguno de ellos, y exento específicamente.
Si no especifican qué punto final de API utilizan, puede usar un rastreador como Wireshark u otro programa basado en winpcap
para averiguar con quién se está comunicando la biblioteca de terceros.
Aquí hay una gran guía para establecer exenciones:
enlace
E) La aplicación abre una URL externa desconocida
Use SFSafariViewController
para abrir sitios web externos desconocidos. Encapsula todas las medidas de protección necesarias para proteger a su usuario.
F) La aplicación tiene un navegador web en línea
Esto es un rollo, ya que SFSafariViewController
usa una vista modal y es probable que necesites usar UIWebView
, que sigue las reglas ATS de tu aplicación. No hay manera de permitir conexiones HTTP en un control específico UIWebView
.
Si desea admitir la apertura del sitio web HTTP desde un navegador UIWebView en línea, deberá habilitar NSAllowsArbitraryLoads
.