Cum se asigură o aplicație iOS

Securitatea este un aspect cheie al dezvoltării de software. Aproape fiecare aplicație mobilă se ocupă de informațiile despre utilizator sau comunică cu un server de la distanță. Chiar dacă securitatea sa îmbunătățit în mod dramatic în ultimele decenii, ea continuă să fie un subiect foarte dezbătut.

În acest articol, aș dori să subliniez o serie de subiecte legate de securitate și dezvoltare mobilă. Pe parcurs, mă refer la o serie de bune practici și sugestii pe care le puteți găsi utile pentru a asigura aplicațiile pe care le scrieți.

Securitate și confidențialitate

Securitatea este relativă. Fragmente de securitate sunt descoperite și patch-uri în mod regulat. Nimic nu este perfect. Acestea fiind spuse, există o serie de lucruri pe care le puteți face pentru a îmbunătăți securitatea aplicațiilor dvs. mobile. Un hoț este mai puțin tentat să intre într-o clădire înconjurată de un gard electric decât unul care nu este.

Unii dezvoltatori ignoră faptul că utilizatorii aplicațiilor lor au încredere în ei cu informațiile lor. În calitate de dezvoltator, sunteți responsabil de păstrarea informațiilor în siguranță. Nu contează ce este acea informație. În timp ce informațiile ar putea părea neimportante pentru dvs., este important pentru utilizator.

Apple ia foarte serios securitatea și intimitatea. HealthKit este un exemplu excelent al angajamentului Apple de a proteja confidențialitatea utilizatorului. Utilizatorul decide cu privire la datele de sănătate la care are acces o aplicație. În timp ce aplicația poate solicita accesul la datele de sănătate ale utilizatorului, HealthKit nu-i spune la care date are acces. Cu alte cuvinte, Apple consideră că statutul de autorizare a unei aplicații este o informație sensibilă pe care nu ar trebui să o cunoască.

1. Stocarea datelor

În cazul în care aplicația dvs. stochează datele

Înainte de a decide cum sau unde să stocați o anumită piesă de date, trebuie să vă întrebați dacă trebuie să stocați aceste date în primul rând. Este posibil, de exemplu, să păstrați datele în memorie în loc să le scrieți pe disc sau să le trimiteți pe un server la distanță? Acest lucru poate simplifica foarte mult arhitectura aplicației dvs. și poate îmbunătăți securitatea acesteia.

Unde ar trebui să stocați date

Dacă decideți că stocarea datelor pe plan local este singura opțiune, trebuie să decideți unde intenționați să stocați aceste date. Pentru informații sensibile, cum ar fi acreditările, brelocul este cea mai bună opțiune. Acest lucru este posibil numai pentru cantități mici de date pe care aplicația dvs. nu are nevoie să le acceseze frecvent.

Datele trebuie să fie susținute la iCloud sau iTunes? Dacă nu este cazul, atunci vă recomandăm să luați în considerare stocarea datelor în Caches directorul cutia de nisip a aplicației. Acest director nu este susținut la iCloud și iTunes. De ce este important acest lucru? Datele care nu există nu pot fi compromise.

Breloc

Sistemul implicit, accesibil prin NSUserDefaults este o modalitate rapidă și convenabilă de a stoca bucăți de date. Din nefericire, sistemul implicit este adesea folosit de dezvoltatori. Se întâmplă prea des ca informațiile sensibile, precum acreditările și jetoanele de acces, să fie stocate în sistemul implicit.

O locație mult mai bună pentru stocarea unor mici fragmente de informații sensibile este cheia de chei a sistemului. Așa cum sugerează și numele, a fost conceput cu siguranță în minte și a fost în jur de mulți ani. Chiar dacă cheia este gestionată de sistemul de operare, în mod implicit, alte aplicații nu au acces la elementele pe care aplicația dvs. le stochează în cheia de breloc.

Este adevărat că interfața pentru accesarea serviciilor keychain este arhaică. Din fericire, există câteva biblioteci excelente care depășesc acest obstacol. Lockbox, de exemplu, este o bibliotecă ușoară pentru a interacționa cu serviciile de tastatură ale sistemului. Interfața lui Lockbox este ușor de folosit și înțeleasă.

Chei, jetoane, acreditări

Este tentant să stocați chei, jetoane și chiar acreditări în locații ușor accesibile, cum ar fi țintă Info.plist sau un fișier JSON din pachetul aplicației. Adevărul este că jocul copilului este de a extrage acele informații dintr-o aplicație descărcată de la App Store. Stocând un jeton API pentru un serviciu web în aplicația dvs. Info.plist, alți dezvoltatori îl pot găsi și utiliza.

2. Rețele

Securitatea transportului aplicațiilor

Securitatea și intimitatea au fost pe agenda Apple timp de mai mulți ani și, alături de alți jucători importanți, Apple a decis să dea un exemplu. În timpul WWDC de anul trecut, compania a introdus Securitatea transportului aplicațiilor.

Cu App Security Transport, Apple își propune să îmbunătățească securitatea platformelor și a aplicațiilor care rulează pe ele. Indiferent de cât de mult investește Apple în securizarea sistemelor de operare, un sistem este la fel de sigur ca cea mai slabă componentă și include aplicații de la terțe părți.

Aplicația de securitate a aplicațiilor cere aplicații pentru a trimite solicitări de rețea printr-o conexiune securizată. Dacă aplicația Security Transport App este activată pentru o aplicație, cererile de rețea sunt trimise prin HTTPS în mod implicit. Apple pune accentul pe angajamentul său față de securitate și confidențialitate, permițând în mod automat App Transport Security pentru aplicațiile construite cu Xcode 7.

Puteți citi mai multe despre App Transport Security pe Envato Tuts +. Deși este ușor să dezactivați App Transport Security, rețineți că unul dintre obiectivele aplicației App Transport Security este de a face dezvoltatorii să ia în considerare comportamentul în rețea al aplicațiilor lor.

Cu cine vorbesc

Practic, fiecare aplicație mobilă utilizează rețeaua. Aceasta înseamnă că persoanele cu intenții proaste se concentrează puternic pe acest aspect al securității aplicațiilor. Rețeaua este o chestiune complexă, iar aplicațiile se bazează pe o mulțime de tehnologii pentru a obține datele pe care le interesează.

În calitate de dezvoltator, este esențial să respectați o serie de bune practici. Am discutat deja despre App Transport Security și despre regulile impuse de această nouă tehnologie. Dar nu se oprește acolo. De asemenea, este posibil să doriți să căutați subiecte mai avansate, cum ar fi fixarea certificatelor pentru a vă asigura că serverul cu care comunica aplicația dvs. nu este fraudulos. Bibliotecile moderne, cum ar fi Alamofire, fac acest lucru mult mai ușor.

3. Informații sensibile

Datele utilizatorului

Majoritatea aplicațiilor utilizează sau stochează informații sensibile despre utilizatori. Dispozitivele mobile au acces la o gamă largă de informații despre utilizatori, adesea personale și sensibile, cum ar fi locația, agenda și informațiile despre sănătate.

După cum am menționat mai devreme în acest articol, prima întrebare pe care trebuie să vă întrebați este dacă aveți nevoie să accesați aceste informații și, mai important, dacă aveți nevoie să stocați informațiile respective.

Dacă aveți posibilitatea să accesați informațiile de care aveți nevoie printr-un cadru nativ, cum ar fi HealthKit, atunci nu este nevoie să duplicați și să stocați aceste informații. De exemplu, Apple va respinge aplicațiile care stochează informațiile despre sănătate ale utilizatorului în iCloud.

Păstrează-l local

Presupunând că trebuie să stocați câteva informații sensibile, luați în considerare dacă aceste informații trebuie păstrate la nivel local. Este necesar să trimiteți informații sensibile la un server la distanță?

Stocarea informațiilor sensibile vine cu un avertisment. Dacă serverul pe care stocați informații sensibile este compromis, este posibil să fiți responsabil pentru expunerea acestor informații la alte părți.

scrisori de acreditare

Securitatea online a evoluat enorm în ultimele decenii. Protocoalele de autentificare, cum ar fi OAuth, au făcut ca comunicarea cu serviciile web să fie mai sigură și mai transparentă.

Dacă cererea dvs. trebuie să vorbească cu un server securizat, luați în considerare modul în care aplicația gestionează datele dvs. de acreditare. Îi păstrează în memorie sau le stochează pe disc? Dacă întrebați numele de utilizator și parola utilizatorului pentru a prelua un indicativ de acces, este bine să stocați acel cod de acces. Dar ar trebui să stocați, de asemenea, numele de utilizator și parola? Răspunsul nu este în majoritatea situațiilor.

Pentru aplicațiile care se ocupă de date foarte sensibile, cum ar fi informații despre sănătate sau financiare, ar putea fi chiar mai bine să păstrați tokenul de acces în memorie, nu să-l stocați pe disc. Menținerea acestuia în memorie o face mult mai sigură, făcând cererea dvs. mult mai puțin răspunzătoare. Există șanse ca tokenul de acces să aibă oricum o scurtă durată de viață.

Concluzie

Securitatea unei aplicații este un aspect fundamental al dezvoltării software-ului. Luați în considerare la ce date accesați aplicația dvs. și dacă ar trebui să stocheze informațiile respective. Dacă decideți să stocați informații sensibile, țineți minte sfaturile și cele mai bune practici de mai sus. Asigurați-vă că tratați informațiile utilizatorului cu respect. Chiar dacă informațiile ar putea părea neimportante pentru dvs., este important pentru utilizator.

Cod