iOS
App Transport Security (ATS)
Ricerca…
Parametri
Parametro | Dettagli |
---|---|
NSAppTransportSecurity | Configura ATS |
NSAllowsArbitraryLoads | Impostare su YES per disabilitare ATS ovunque. In iOS 10 e versioni successive e macOS 10.12 e versioni successive, il valore di questa chiave viene ignorato se una delle seguenti chiavi è presente nel file Info.plist dell'app: NSAllowsArbitraryLoadsInMedia, NSAllowsArbitraryLoadsInWebContent, NSAllowsLocalNetworking |
NSAllowsArbitraryLoadsInMedia | Impostare su YES per disabilitare ATS per i supporti caricati utilizzando le API dal framework AV Foundation. (iOS 10+, macOS 10.12+) |
NSAllowsArbitraryLoadsInWebContent | Impostare su YES per disabilitare ATS nelle viste Web dell'app ( WKWebView , UIWebView , WebView ) senza influire sulle connessioni NSURLSession. (iOS 10+, macOS 10.12+) |
NSAllowsLocalNetworking | Impostare su YES per disabilitare le connessioni ai domini non qualificati e ai domini .local. (iOS 10+, macOS 10.12+) |
NSExceptionDomains | Configura le eccezioni per domini specifici |
NSIncludesSubdomains | Impostare su YES per applicare le eccezioni a tutti i sottodomini del dominio selezionato. |
NSRequiresCertificateTransparency | Impostare su YES per richiedere che i timestamp validi, firmati con Certificate Transparency (CT), dai log CT noti, siano presentati per i certificati server (X.509) su un dominio. (iOS 10+, macOS 10.12+) |
NSExceptionAllowsInsecureHTTPLoads | Impostare su YES per consentire HTTP sul dominio selezionato. |
NSExceptionRequiresForwardSecrecy | Predefinito a YES ; Impostare su NO per disabilitare il segreto in avanti e accettare più codici. |
NSExceptionMinimumTLSVersion | Il valore predefinito è TLSv1.2 ; I valori possibili sono: TLSv1.0 , TLSv1.1 , TLSv1.2 |
NSThirdPartyExceptionAllowsInsecureHTTPLoads | Simile a NSExceptionAllowsInsecureHTTPLoads , ma per domini su cui non hai alcun controllo |
NSThirdPartyExceptionRequiresForwardSecrecy | Simile a NSExceptionRequiresForwardSecrecy , ma per domini su cui non hai alcun controllo |
NSThirdPartyExceptionMinimumTLSVersion | Simile a NSExceptionMinimumTLSVersion , ma per domini su cui non hai alcun controllo |
Osservazioni
App Transport Security è una funzionalità di sicurezza in iOS e macOS. Impedisce alle app di stabilire connessioni non protette. Per impostazione predefinita, le app possono utilizzare solo connessioni HTTPS protette.
Se un'applicazione deve connettersi a un server tramite HTTP, è necessario definire le eccezioni in Info.plist
. (vedi gli esempi per maggiori informazioni a riguardo)
Nota: nel 2017, Apple applicherà ATS. Ciò significa che non è più possibile caricare app con eccezioni ATS definite in Info.plist
. Se è possibile fornire buoni argomenti, perché è necessario utilizzare HTTP, è possibile contattare Apple e potrebbero consentire di definire eccezioni. (Fonte: WWDC 2016 - Session 706 )
Ulteriori informazioni sulla configurazione di App Transport Security sono disponibili nella documentazione di CocoaKeys .
Carica tutto il contenuto HTTP
Apple ha introdotto ATS con iOS 9 come nuova funzionalità di sicurezza per migliorare la privacy e la sicurezza tra app e servizi web. Per impostazione predefinita, ATS non riesce tutte le richieste non HTTPS. Mentre questo può essere davvero bello per gli ambienti di produzione, può essere fastidioso durante i test.
ATS è configurato nel file Info.plist
della destinazione con il dizionario NSAppTransportSecurity
( App Transport Security Settings
nell'editor Xcode Info.plist). Per consentire tutto il contenuto HTTP, aggiungi il valore Allow Arbitrary Loads
booleani Allow Arbitrary Loads
( NSAllowsArbitraryLoads
) e NSAllowsArbitraryLoads
su YES
. Questo non è consigliato per le app di produzione e, se è richiesto il contenuto HTTP, si consiglia di abilitarlo selettivamente.
Caricare in modo selettivo il contenuto HTTP
Simile all'abilitazione di tutti i contenuti HTTP, tutte le configurazioni avvengono in App Transport Security Settings
. Aggiungere il dizionario dei Exception Domains
( NSExceptionDomains
) alle impostazioni ATS di livello superiore.
Per ogni dominio, aggiungi un elemento del dizionario ai domini di eccezione, dove la chiave è il dominio in questione. Impostare NSExceptionAllowsInsecureHTTPLoads
su YES
per disabilitare il requisito HTTPS per quel dominio.
Gli endpoint richiedono SSL
Introdotto in iOS 9, tutti gli endpoint devono rispettare le specifiche HTTPS.
Qualsiasi endpoint che non utilizza SSL non riuscirà con un avviso nel log della console. Alla tua applicazione sembrerà che la connessione internet non sia riuscita.
Per configurare le eccezioni: inserire quanto segue nel file Info.plist:
- Consentire particolare dominio (testdomain.com) solo:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
La chiave che consente tale comportamento è NSExceptionAllowsInsecureHTTPLoads
. In questo caso, l'app consentirà solo la connessione HTTP al dominio menzionato (testdomain.com) e bloccherà tutte le altre connessioni HTTP.
La chiave NSIncludesSubdomains
specifica che anche tutti i sottodomini del dominio menzionato (testdomain.com) dovrebbero essere consentiti.
- Consenti qualsiasi dominio:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
In questo caso, l'app consentirà la connessione HTTP a qualsiasi dominio. A partire dal 1 ° gennaio 2017, l'utilizzo di questo flag causerà una revisione approfondita di App Store e gli sviluppatori di app dovranno spiegare perché devono utilizzare questa eccezione in primo luogo. Le possibili spiegazioni includono:
- Un'applicazione che carica contenuti multimediali crittografati che non contengono informazioni personalizzate.
- Connessioni a dispositivi che non possono essere aggiornati per utilizzare connessioni sicure.
- Connessione a un server che è gestito da un'altra entità e non supporta connessioni sicure.