Apple Strammer Security Med App Transport Security

Apple Strammer Security Med App Transport Security
36
Del
8
Del
Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

Betydningen av og oppmerksomhet for sikkerhet på nettet har økt kraftig de siste årene. Under årets WWDC, har Apple gjort det klart at de planlegger å lede ved eksempel ved å forbedre sikkerheten i sine operativsystemer gjennom en ny funksjon, App Transport Security.

Selvfølgelig, sikkerheten for en plattform er bare så sterk som sikkerhet for sine komponenter og det inkluderer tredjeparts applikasjoner. Med andre ord, forventer Apple utviklere å vedta App Transport Security i sine applikasjoner.

I denne artikkelen vil jeg forklare hva App Transport Security innebærer, hvordan det vil påvirke programmene, og hvordan du kan oppdatere programmene til hold deg til Apples retningslinjer og anbefalinger.

Hva er App Transport Security?

App Transport Security, eller ATS for kort, er en ny funksjon i iOS 9 og OS X El Capitan. Mens Apple ikke nevner watchOS, kan vi anta App Transport Security gjelder også watchOS 2. App Transport Security tar sikte på å bedre sikkerheten i Apples operativsystemer og programmer som kjører på disse operativsystemene.

Nettverk forespørsler som er laget over HTTP overføre data som klartekst. Det sier seg selv at dette utgjør en betydelig sikkerhetsrisiko. Apple understreker at alle utviklere bør tilstrebe å holde dataene fra sine kunder trygge og sikre, selv om at data ikke synes
viktig eller sensitiv.

App Transport Security oppfordrer aktivt sikkerhet ved å pålegge en rekke sikkerhets beste praksis, den viktigste er kravet om at nettverksforespørsler må sendes via en sikker tilkobling. Med App Transport Security aktivert, er nettverksforespørsler automatisk laget over HTTPS i stedet for HTTP.

Det finnes en rekke andre krav til ytterligere å forbedre sikkerheten. For eksempel krever App Transport Security TLS (Transport Layer Security) 1.2 eller høyere. Selv om du kan bli kjent med TLS, er jeg sikker på at du har hørt av SSL (Secure Sockets Layer). TLS er etterfølgeren SSL og er en samling av kryptografiske protokoller for å håndheve sikkerhet over nettverkstilkoblinger.

Apple nylig publisert en offentlig, forhåndstech om App Transport Security for å gi utviklere muligheten til å planlegge for App Transport Security. Dokumentet skisserer hva App Transport Security forventer fra dine applikasjoner og web-tjenester den samhandler med.

Unntak

Vent et sekund. Min programmet bruker en CDN (Content Delivery Network) at jeg ikke har kontroll over, og det støtter ikke HTTPS. Ikke bekymre deg. Apple har ryggen dekket. Med hensyn til App Transport Security, faller en søknad til en av fire kategorier. La oss gå over hver kategori for å se hvordan det påvirker en søknad.

HTTPS Bare

Hvis søknaden bare grensesnitt med servere som støtter HTTPS, så du er på hell. Du er søknad trenger ikke å gjøre noen endringer. Vær imidlertid oppmerksom på at App Transport Security krever TLS 1.2 og det forventer domenet til å bruke koder som støtter fremover hemmelighold. Sertifikatet må også oppfylle kravene som følger av ATS. Det er derfor viktig å dobbeltsjekke at serverne søknaden din kommuniserer med samsvar med kravene i ATS

Mix &.; Match

Det er mulig at din søknad snakker til servere som ikke oppfyller ATS krav. I så fall må du fortelle hvilket operativsystem som domener er involvert og spesifisere i programmets Info.plist hvilke krav ikke er oppfylt.

Dette betyr at App Transport Security håndheves for hver endepunkt program samtaler til med unntak av de som er spesifisert i programmets Info.plist. Du kan konfigurere unntakene ved hjelp av en rekke forhåndsdefinerte nøkler. I det følgende Info.plist, definerer vi tre unntak
< xml version = "1.0" encoding = "UTF-8" > <.?! DOCTYPE plist PUBLIC "- //Apple //DTD plist 1.0 //EN "" http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version = "1.0" > < dict > ... ≪ nøkkel > NSAppTransportSecurity < /nøkkel > < dict > < nøkkel > NSExceptionDomains < /nøkkel > < dict > < nøkkel > api.insecuredomain.com < /nøkkel > < dict > < nøkkel > NSExceptionAllowsInsecureHTTPLoads < /nøkkel > < falsk /> < /dict > < nøkkel > cdn.somedomain.com < /nøkkel > < dict > < nøkkel > NSThirdPartyExceptionMinimumTLSVersion < /nøkkel > < streng > 1,1 < streng /> < /dict > < nøkkel > thatotherdomain.com < /nøkkel > < dict > < nøkkel > NSIncludesSubdomains < /nøkkel > < true /> < nøkkel > NSExceptionRequiresForwardSecrecy < /nøkkel > < falsk /> < /dict > < /dict > < /dict > ... < /dict > < /plist >

api.insecuredomain.com

Det første unntaket vi definerer forteller ATS at kommunikasjonen med dette underdomenet styrer kravet om å bruke HTTPS. Merk at dette unntaket gjelder bare for den underdomene spesifisert i unntaket. Det er viktig å forstå at NSExceptionAllowsInsecureHTTPLoads nøkkelen ikke bare forholde seg til bruk av HTTPS. Unntaket presiserer at, for det domenet, er alle krav fra App Transport Security styres.

cdn.domain.com

Det er mulig at din søknad snakker til en server som betjener sine data over HTTPS , men ikke bruker TLS 1.2 eller høyere. I så fall, definerer man et unntak som angir den minste TLS versjon som skal brukes. Dette er en bedre og tryggere alternativ enn helt altoverskyggende App Transport Security for det aktuelle domenet.

thatotherdomain.com

NSIncludesSubdomains nøkkelen forteller App Transport Security at unntaket gjelder for hver underdomene av den angitte domene. Unntaket definerer videre at domenet kan bruke koder som ikke støtter frem hemmelighold (NSExceptionRequiresForwardSecrecy) ved å utvide listen over godkjente koder. For mer informasjon om fremover hemmelighold, anbefaler jeg å lese Apples tech om temaet.

Opt Out

Hvis du bygger en nettleser, så har du et litt større problem. Fordi du ikke vet hvilke nettsider brukerne skal besøke, kan du ikke muligens fortelle om disse nettsidene er tjent over HTTPS og møte ATS krav. I så fall er det ingen annen mulighet enn å melde deg ut av App Transport Security helt.

Det er viktig at du eksplisitt melde deg ut av App Transport Security. Husk at App Transport Security håndheves som standard. I programmets Info.plist, legger du en ordbok for nøkkelen NSAppTransportSecurity. Ordboken bør inneholde en nøkkel, NSAllowsArbitraryLoads, og verdien bør settes til YES. Dette er hva programmets Info.plist filen skal se ut hvis du melde deg ut av App Transport Security
. ≪? Xml version = "1.0" encoding = "UTF-8" > <! DOCTYPE plist PUBLIC " - //Apple //DTD plist 1.0 //EN "" http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version = "1.0" > < dict > ... ≪ nøkkel > NSAppTransportSecurity < /nøkkel > < dict > < nøkkel > NSAllowsArbitraryLoads < /nøkkel > < true /> < /dict > ... < /dict > < /plist >
Opt Out Med Unntak

Det finnes en fjerde alternativ der søknaden opts ut av App Transport Security, men definerer en rekke unntak. Dette er nyttig hvis søknaden henter data fra en rekke servere du ikke kontrollerer, men også snakker til en API du vedlikeholde. I så fall, du angir i programmets Info.plist at vilkårlige masser er tillatt, men du også definere ett eller flere unntak som App Transport Security er aktivert. Dette er hva Info.plist kan se ut
< xml version = "1.0" encoding = "UTF-8" > <.?! DOCTYPE plist PUBLIC "- //Apple //DTD plist 1.0 //EN "" http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version = "1.0" > < dict > ... ≪ nøkkel > NSAppTransportSecurity < /nøkkel > < dict > < nøkkel > NSAllowsArbitraryLoads < /nøkkel > < true /> < nøkkel > NSExceptionDomains < /nøkkel > < dict > < nøkkel > api.tutsplus.com < /nøkkel > < dict > < nøkkel > NSExceptionAllowsInsecureHTTPLoads < /nøkkel > < falsk /> < /dict > < /dict > < /dict > ... < /dict > < /plist >
Timing

Apple har lagt vekt på at programmene automatisk velge å delta i App Transport Security hvis de er bygget mot iOS 9 eller OS X El Capitan. Det betyr at du ikke trenger å gjøre noen endringer i programmene dine så lenge du bygge dem mot iOS 8 eller OS X Yosemite.

Basert på tidligere versjoner av iOS og OS X, men vi har lært at Apple krever utviklere å bygge sine applikasjoner mot den nyeste SDK ganske snart etter deres offisielle utgivelsen. Med andre ord, selv om du ikke er nødt til å overholde App Transport Security når iOS 9 og OS X El Capitan er utgitt senere i år, er det svært sannsynlig at Apple vil kreve utviklere å bygge mot den nyeste SDK i første eller andre kvartal 2016. Jeg anbefaler derfor at du undersøker hvordan App Transport Security vil påvirke dine applikasjoner før heller enn senere.

Konklusjon

Jeg håper denne artikkelen har gjort det klart at App Transport Security er ikke noe programmene dine kan vedta en dag
. Det ligner på Apples krav om 64-bit-støtte ikke altfor lenge siden. Med mindre programmene bare snakke til servere over HTTPS som oppfyller de ATS kravene, må du investere litt tid til å undersøke hvordan App Transport Security vil påvirke dine applikasjoner. Apples tech om App Transport Security kan hjelpe deg med dette.