imodzone - Seguridad de transporte de aplicaciones y direcciones IP en iOS9
imodzone downloads ios 9 (4)
Desarrollo mi aplicación iOS usando un servidor local que se ejecuta en mi caja de desarrollo. Cuando pruebo en dispositivos, me conecto directamente a través de una dirección IP, que es a través de HTTP y no HTTPS (por lo que no tengo que lidiar con certificados autofirmados durante el desarrollo, que al dispositivo ni siquiera le gustaría).
Pensé que esto sería suficiente:
Sin embargo, no puedo hacer que funcione sin agregar también
NSAllowsArbitraryLoads = YES
, AKA this:
Ahora, tendré que recordar eliminar esto al lanzar una compilación de producción, pero no durante el desarrollo ... arg.
¿Deberían los
NSExceptionDomains
trabajar con direcciones IP, y si no, hay algo más que pueda hacer sin habilitar también
NSAllowsArbitraryLoads
?
¿Hay algo más que pueda hacer sin habilitar también
NSAllowsArbitraryLoads
?
Una solución alternativa es usar xip.io , como lo explicó QJeffR en este hilo de los foros de desarrolladores de Apple (que fue compartido por David L en su comentario ):
Una llamada DNS a (por ejemplo) 10.0.1.8.xip.io se resolverá a 10.0.1.8 , permitiendo el uso del dominio en lugar de la dirección IP para la clave
NSExceptionDomains
.
Como dijo @PanxShaz, no puede poner una dirección IP codificada, pero puede usar una solución sencilla:
-
Abra su
/etc/hosts
usandosudo
y agregue un nuevo nombre de dominio local para su dirección IP. Ejemplo:192.168.99.100 docker-host.localhost
-
Luego enjuague su DNS:
dscacheutil -flushcache
-
Y finalmente use este nuevo dominio local en las excepciones de seguridad de transporte de su aplicación.
La dirección IP codificada no funcionará en iOS9. También enfrenté el mismo problema. Probé todas las permutaciones y combinaciones de soluciones disponibles. Finalmente, tuve que usar un nombre de dominio apropiado.
Entonces, NO. En iOS9 simplemente no puede salirse con la suya con direcciones IP codificadas.
Si está apuntando a iOS 10+, simplemente configure el indicador NSAllowsLocalNetworking .