Probabilmente è giustificato, perché con la velocità con cui aumenta la potenza di calcolo, la crittografia precedente diventa rapidamente debole, ciò che una volta era considerato "troppo difficile da rompere" diventa fattibile.
Apple ha l'abitudine di educare i propri utenti / sviluppatori, che tendono anche a essere pigri e trascurano tali problemi, quindi questa è probabilmente una buona cosa, specialmente quando le soluzioni sono facili da implementare.
Ci sono alcuni casi in cui ATS deve essere disabilitato, ma la maggior parte delle volte può essere risolto senza disabilitare ATS -
A) Il backend non supporta le connessioni HTTPS
Configura il tuo back-end per supportare le connessioni HTTPS, non c'è motivo di utilizzare connessioni non sicure.
B) Il backend utilizza un certificato autofirmato
O firmalo con un'autorità di certificazione conosciuta o contrassegna il certificato di root autofirmato. Puoi utilizzare AFNetworking
per bloccare il tuo file CER.
C) Backend non supporta TLS v1.2 con Forward Secrecy
Aggiorna il tuo server per supportare quei codici. Cerca sul Web come farlo sul tuo server web.
D) L'app comunica con una terza parte che non soddisfa pienamente ATS
Aggiungi un'eccezione per quel sito Web specifico. Verifica se l'endpoint supporta lo schema HTTPS, i protocolli TLS v1.2
e le suite di crittografia Forward Secrecy
, se manca uno di quelli - e un'esenzione specifica.
Se non specificano quale endpoint API usano, puoi utilizzare uno sniffer come Wireshark o un altro programma basato su winpcap
per scoprire con chi sta comunicando la libreria di terze parti.
Ecco un'ottima guida per impostare le esenzioni -
link
E) L'app apre un URL esterno sconosciuto
Utilizza SFSafariViewController
per aprire siti Web esterni sconosciuti. Incapsula tutte le misure di protezione richieste per proteggere il tuo utente.
F) L'app ha un browser web incorporato
Questo è un problema, dal momento che SFSafariViewController
usa una vista modale e probabilmente dovrai usare UIWebView
, che segue le regole ATS della tua app. Non è possibile consentire le connessioni HTTP su un controllo UIWebView
specifico.
Se vuoi supportare l'apertura del sito Web HTTP da un browser UIWebView in linea, devi abilitare NSAllowsArbitraryLoads
.