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:

  1. 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.

  1. 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.


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow