tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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 bajtne bafer.
NSCoding
implementacija
Da 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:
class CustomPoint: NSObject, NSCoding {
var x: Double = 0.0
var name: String = ""
func encode(with aCoder: NSCoder) {
aCoder.encode(x, forKey: "x")
aCoder.encode(name, forKey: "name")
}
required convenience init?(coder aDecoder: NSCoder) {
guard let name = aDecoder.decodeObject(forKey: "name") as? String else { return nil }
self.init(x: aDecoder.decodeDouble(forKey: "x"), name: name)
}
}
Povećanje bezbednosti sa 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:
static var supportsSecureCoding: Bool {
return true
}
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
Arhiviranje podataka sa NSKeyedArchiver
NSKeyedArchiver
i njegov pandan, NSKeyedUnarchiver
, omogućavaju kodiranje objekata u datoteku i kasnije njihovo preuzimanje. Ovaj mehanizam je koristan za očuvanje objekata:
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
Korišćenje Codable
za pojednostavljenu serializaciju
Swiftov Codable
protokol kombinuje Decodable
i Encodable
, olakšavajući kodiranje i dekodiranje objekata kao što su String
, Int
, Double
, itd., bez dodatnog truda:
struct CustomPointStruct: Codable {
var x: Double
var name: String
}
Ovaj pristup podržava jednostavnu serijalizaciju ka i od listi svojstava 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 na datotečni sistem, 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 radi poboljšanja bezbednosti.
Reference
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.