iOS Serialisation and Encoding
Kod i više informacija na https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
Serijalizacija objekata u iOS razvoju
U iOS-u, serijalizacija objekata podrazumeva konvertovanje objekata u format koji se može lako skladištiti ili prenositi, a zatim njihovo rekonstrukciju iz ovog formata kada je to potrebno. Dva glavna protokola, NSCoding
i NSSecureCoding
, olakšavaju ovaj proces za Objective-C ili NSObject
podklase, omogućavajući objektima da budu serijalizovani u NSData
, format koji obavija bajt bafer.
NSCoding
Implementacija
NSCoding
ImplementacijaDa bi se implementirao NSCoding
, klasa mora nasleđivati od NSObject
ili biti označena kao @objc
. Ovaj protokol zahteva implementaciju dva metoda za kodiranje i dekodiranje instancnih varijabli:
Povećanje bezbednosti sa NSSecureCoding
NSSecureCoding
Da bi se umanjile ranjivosti gde napadači ubacuju podatke u već konstruisane objekte, NSSecureCoding
nudi poboljšani protokol. Klase koje se pridržavaju NSSecureCoding
moraju da verifikuju tip objekata tokom dekodiranja, osiguravajući da se instanciraju samo očekivani tipovi objekata. Međutim, važno je napomenuti da, iako NSSecureCoding
poboljšava bezbednost tipa, ne enkriptuje podatke niti osigurava njihovu integritet, što zahteva dodatne mere za zaštitu osetljivih informacija:
Data Archiving with NSKeyedArchiver
NSKeyedArchiver
NSKeyedArchiver
i njegov pandan, NSKeyedUnarchiver
, omogućavaju kodiranje objekata u datoteku i kasnije njihovo preuzimanje. Ovaj mehanizam je koristan za trajno čuvanje objekata:
Korišćenje Codable
za pojednostavljenu serializaciju
Codable
za pojednostavljenu serializacijuSwiftov Codable
protokol kombinuje Decodable
i Encodable
, olakšavajući kodiranje i dekodiranje objekata kao što su String
, Int
, Double
, itd., bez dodatnog truda:
Ovaj pristup podržava jednostavnu serijalizaciju ka i od property lista i JSON-a, poboljšavajući rukovanje podacima u Swift aplikacijama.
JSON i XML kodiranje alternativama
Pored nativne podrške, nekoliko biblioteka trećih strana nudi mogućnosti kodiranja/dekodiranja JSON-a i XML-a, svaka sa svojim karakteristikama performansi i bezbednosnim razmatranjima. Važno je pažljivo odabrati ove biblioteke, posebno kako bi se umanjile ranjivosti poput XXE (XML spoljašnjih entiteta) napada konfigurisanjem parsera da spreče obradu spoljašnjih entiteta.
Bezbednosna razmatranja
Kada se serijalizuju podaci, posebno u sistem datoteka, važno je biti oprezan u vezi sa potencijalnim uključivanjem osetljivih informacija. Serijalizovani podaci, ako budu presretnuti ili nepravilno obrađeni, mogu izložiti aplikacije rizicima kao što su neovlašćene radnje ili curenje podataka. Preporučuje se enkripcija i potpisivanje serijalizovanih podataka kako bi se poboljšala bezbednost.
Reference
Last updated