iOS
App Transport Security (ATS)
Zoeken…
parameters
Parameter | Details |
---|---|
NSAppTransportSecurity | Configureer ATS |
NSAllowsArbitraryLoads | Stel in op YES om ATS overal uit te schakelen. In iOS 10 en hoger en macOS 10.12 en hoger wordt de waarde van deze sleutel genegeerd als een van de volgende sleutels aanwezig is in het Info.plist-bestand van uw app: NSAllowsArbitraryLoadsInMedia, NSAllowsArbitraryLoadsInWebContent, NSAllowsLocalNetworking |
NSAllowsArbitraryLoadsInMedia | Stel in op YES om ATS uit te schakelen voor media die zijn geladen met API's uit het AV Foundation-framework. (iOS 10+, macOS 10.12+) |
NSAllowsArbitraryLoadsInWebContent | Stel in op YES om ATS uit te schakelen in de webweergaven van uw app ( WKWebView , UIWebView , WebView ) zonder uw NSURLSession-verbindingen te beïnvloeden. (iOS 10+, macOS 10.12+) |
NSAllowsLocalNetworking | Stel in op YES om uit te schakelen voor verbindingen met niet-gekwalificeerde domeinen en .local-domeinen. (iOS 10+, macOS 10.12+) |
NSExceptionDomains | Configureer uitzonderingen voor specifieke domeinen |
NSIncludesSubdomains | Stel in op YES om de uitzonderingen toe te passen op alle subdomeinen van het geselecteerde domein. |
NSRequiresCertificateTransparency | Stel in op YES om te eisen dat geldige, ondertekende Certificate Transparency (CT) tijdstempels, van bekende CT-logs, worden gepresenteerd voor server (X.509) certificaten op een domein. (iOS 10+, macOS 10.12+) |
NSExceptionAllowsInsecureHTTPLoads | Stel in op YES om HTTP toe te staan op het geselecteerde domein. |
NSExceptionRequiresForwardSecrecy | Standaard ingesteld op YES ; Zet op NO om Forward Secrecy uit te schakelen en meer cijfers te accepteren. |
NSExceptionMinimumTLSVersion | Standaard ingesteld op TLSv1.2 ; Mogelijke waarden zijn: TLSv1.0 , TLSv1.1 , TLSv1.2 |
NSThirdPartyExceptionAllowsInsecureHTTPLoads | Vergelijkbaar met NSExceptionAllowsInsecureHTTPLoads , maar voor domeinen waarover u geen controle hebt |
NSThirdPartyExceptionRequiresForwardSecrecy | Vergelijkbaar met NSExceptionRequiresForwardSecrecy , maar voor domeinen waarover u geen controle hebt |
NSThirdPartyExceptionMinimumTLSVersion | Vergelijkbaar met NSExceptionMinimumTLSVersion , maar voor domeinen waarover u geen controle hebt |
Opmerkingen
De App Transport Security is een beveiligingsfunctie in iOS en macOS. Het voorkomt dat apps onbeveiligde verbindingen tot stand brengen. Standaard kunnen apps alleen beveiligde HTTPS-verbindingen gebruiken.
Als een app via HTTP verbinding moet maken met een server, moeten uitzonderingen worden gedefinieerd in de Info.plist
. (zie de voorbeelden voor meer informatie daarover)
Opmerking: in 2017 zal Apple ATS afdwingen. Dat betekent dat u niet langer apps kunt uploaden waarvoor ATS-uitzonderingen zijn gedefinieerd in de Info.plist
. Als u goede argumenten kunt geven, waarom u HTTP moet gebruiken, kunt u contact opnemen met Apple en zij kunnen u toestaan uitzonderingen te definiëren. (Bron: WWDC 2016 - Sessie 706 )
Meer informatie over de configuratie van App Transport Security is te vinden in de CocoaKeys-documentatie .
Laad alle HTTP-inhoud
Apple introduceerde ATS met iOS 9 als een nieuwe beveiligingsfunctie om de privacy en beveiliging tussen apps en webservices te verbeteren. ATS mislukt standaard alle niet-HTTPS-aanvragen. Hoewel dit erg leuk kan zijn voor productieomgevingen, kan het tijdens het testen hinderlijk zijn.
ATS wordt geconfigureerd in het Info.plist
bestand van het NSAppTransportSecurity
met het NSAppTransportSecurity
woordenboek ( App Transport Security Settings
in de Xcode Info.plist-editor). Om alle HTTP-inhoud toe te staan, voegt u de Boolean Allow Arbitrary Loads
NSAllowsArbitraryLoads
Allow Arbitrary Loads
( NSAllowsArbitraryLoads
) toe en stelt u deze in op YES
. Dit wordt niet aanbevolen voor productie-apps en als HTTP-inhoud vereist is, wordt aanbevolen om deze in plaats daarvan selectief in te schakelen.
Laad HTTP-inhoud selectief
Net als bij het inschakelen van alle HTTP-inhoud, vindt alle configuratie plaats onder de App Transport Security Settings
. Voeg het woordenboek Exception Domains
( NSExceptionDomains
) toe aan de ATS-instellingen op het hoogste niveau.
Voeg voor elk domein een woordenboekitem toe aan de uitzonderingsdomeinen, waarbij de sleutel het betreffende domein is. Stel NSExceptionAllowsInsecureHTTPLoads
op YES
om de HTTPS-vereiste voor dat domein uit te schakelen.
Eindpunten vereisen SSL
Geïntroduceerd in iOS 9, moeten alle eindpunten voldoen aan de HTTPS-specificatie.
Alle eindpunten die geen SSL gebruiken, mislukken met een waarschuwing in het consolelogboek. Voor uw toepassing lijkt het erop dat de internetverbinding is mislukt.
Uitzonderingen configureren: plaats het volgende in uw Info.plist-bestand:
- Laat bepaald domein (testdomain.com) alleen:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
De sleutel die dergelijk gedrag toestaat, is NSExceptionAllowsInsecureHTTPLoads
. In dit geval staat de app alleen HTTP-verbinding toe met het genoemde domein (testdomein.nl) en worden alle andere HTTP-verbindingen geblokkeerd.
De sleutel NSIncludesSubdomains
geeft aan dat alle subdomeinen van het genoemde domein (testdomein.com) ook moeten worden toegestaan.
- Elk domein toestaan:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
In dit geval staat de app een HTTP-verbinding met elk domein toe. Vanaf 1 januari 2017 zorgt het gebruik van deze vlag voor een grondige beoordeling van de App Store en moeten de app-ontwikkelaars uitleggen waarom ze deze uitzondering in de eerste plaats moeten gebruiken. Mogelijke verklaringen zijn:
- Een applicatie die gecodeerde media-inhoud laadt die geen gepersonaliseerde informatie bevat.
- Verbindingen met apparaten die niet kunnen worden opgewaardeerd om beveiligde verbindingen te gebruiken.
- Verbinding met een server die wordt beheerd door een andere entiteit en geen beveiligde verbindingen ondersteunt.