iOS
App Transport Security (ATS)
Sök…
parametrar
Parameter | detaljer |
---|---|
NSAppTransportSecurity | Konfigurera ATS |
NSAllowsArbitraryLoads | Ställ in på YES att inaktivera ATS överallt. I iOS 10 och senare, och macOS 10.12 och senare, ignoreras värdet på denna nyckel om någon av följande nycklar finns i appens Info.plist-fil: NSAllowsArbiticialLoadsInMedia, NSAllowsArbiticialLoadsInWebContent, NSAllowsLocalNetworking |
NSAllowsArbitraryLoadsInMedia | Ställ in på YES att inaktivera ATS för media som laddas med API: er från AV Foundation-ramverket. (iOS 10+, macOS 10.12+) |
NSAllowsArbitraryLoadsInWebContent | Ställ in på YES att inaktivera ATS i din WKWebView UIWebView ( WKWebView , UIWebView , WebView ) utan att det påverkar dina NSURLSession-anslutningar. (iOS 10+, macOS 10.12+) |
NSAllowsLocalNetworking | Ställ in på YES att inaktivera för anslutningar till okvalificerade domäner och till. Lokala domäner. (iOS 10+, macOS 10.12+) |
NSExceptionDomains | Konfigurera undantag för specifika domäner |
NSIncludesSubdomains | Ställ in på YES att tillämpa undantagen på alla underdomäner för den valda domänen. |
NSRequiresCertificateTransparency | Ställ in på YES att kräva att giltiga, signerade certifikattransparens (CT) -tidsstämplar, från kända CT-loggar, presenteras för servercertifikat (X.509) på en domän. (iOS 10+, macOS 10.12+) |
NSExceptionAllowsInsecureHTTPLoads | Ställ in på YES att tillåta HTTP på den valda domänen. |
NSExceptionRequiresForwardSecrecy | Standardvärdet för YES ; Ställ in på NO att inaktivera Forward Secrecy och acceptera fler cifrar. |
NSExceptionMinimumTLSVersion | Standardvärdet för TLSv1.2 ; Möjliga värden är: TLSv1.0 , TLSv1.1 , TLSv1.2 |
NSThirdPartyExceptionAllowsInsecureHTTPLoads | Liknar NSExceptionAllowsInsecureHTTPLoads , men för domäner som du inte har någon kontroll över |
NSThirdPartyExceptionRequiresForwardSecrecy | Liknar NSExceptionRequiresForwardSecrecy , men för domäner som du inte har någon kontroll över |
NSThirdPartyExceptionMinimumTLSVersion | Liknar NSExceptionMinimumTLSVersion , men för domäner som du inte har någon kontroll över |
Anmärkningar
App Transport Security är en säkerhetsfunktion i iOS och macOS. Det förhindrar appar från att upprätta osäkra anslutningar. Som standard kan appar bara använda säkra HTTPS-anslutningar.
Om en app måste ansluta till en server via HTTP måste undantag definieras i Info.plist
. (se exemplen för mer information om det)
Obs: Apple verkställer ATS 2017. Det betyder att du inte längre kan ladda upp appar som har ATS-undantag definierade i Info.plist
. Om du kan ge bra argument, varför du måste använda HTTP, kan du kontakta Apple och de kan låta dig definiera undantag. (Källa: WWDC 2016 - session 706 )
Mer information om konfigurationen av App Transport Security finns i CocoaKeys-dokumentationen .
Ladda allt HTTP-innehåll
Apple introducerade ATS med iOS 9 som en ny säkerhetsfunktion för att förbättra sekretess och säkerhet mellan appar och webbtjänster. ATS misslyckas som standard alla icke-HTTPS-förfrågningar. Även om detta kan vara riktigt trevligt för produktionsmiljöer, kan det vara en olägenhet under testning.
ATS konfigureras i målets Info.plist
fil med NSAppTransportSecurity
ordlistan ( App Transport Security Settings
i Xcode Info.plist-redigeraren). Så att alla HTTP innehåll, tillsätt Allow Arbitrary Loads
Boolean ( NSAllowsArbitraryLoads
) och ställ in den på YES
. Detta rekommenderas inte för produktionsappar, och om HTTP-innehåll krävs rekommenderas det att det är selektivt aktiverat istället.
Ladda selektivt HTTP-innehåll
På samma sätt som att aktivera allt HTTP-innehåll sker all konfiguration under App Transport Security Settings
. Tillsätt Exception Domains
ordbok ( NSExceptionDomains
) till inställningarna toppnivå ATS.
Lägg till ett ordbokspost för varje domän till undantagsdomänerna, där nyckeln är domänen i fråga. Ställ in NSExceptionAllowsInsecureHTTPLoads
till YES
att inaktivera HTTPS-kravet för den domänen.
Endpoints kräver SSL
Introducerad i iOS 9 måste alla slutpunkter följa HTTPS-specifikationen.
Eventuella slutpunkter som inte använder SSL kommer att misslyckas med en varning i konsolloggen. För din ansökan verkar det som om internetanslutningen misslyckades.
Så här konfigurerar du undantag: Placera följande i din Info.plist-fil:
- Tillåta viss domän (testdomain.com) endast:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
Nyckeln som tillåter sådant beteende är NSExceptionAllowsInsecureHTTPLoads
. I detta fall tillåter app endast HTTP-anslutning till nämnda domän (testdomain.com) och blockerar alla andra HTTP-anslutningar.
Nyckeln NSIncludesSubdomains
anger att alla och alla underdomäner i den nämnda domänen (testdomain.com) också ska vara tillåtna.
- Tillåt alla domäner:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
I detta fall tillåter app HTTP-anslutning till alla domäner. Från och med 1 januari 2017 kommer användningen av denna flagga att ge en grundlig granskning av App Store och apputvecklarna måste förklara varför de måste använda detta undantag i första hand. Möjliga förklaringar inkluderar:
- En applikation som laddar krypterat medieinnehåll som inte innehåller personlig information.
- Anslutningar till enheter som inte kan uppgraderas för att använda säkra anslutningar.
- Anslutning till en server som hanteras av en annan enhet och som inte stöder säkra anslutningar.