tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Kode en meer inligting in https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.

Objekt Serialisering in iOS Ontwikkeling

In iOS, objekt serialisering behels die omskakeling van objekten in 'n formaat wat maklik gestoor of oorgedra kan word, en dan die heropbou daarvan uit hierdie formaat wanneer nodig. Twee hoof protokolle, NSCoding en NSSecureCoding, fasiliteer hierdie proses vir Objective-C of NSObject subklasse, wat objekten toelaat om in NSData geserialiseer te word, 'n formaat wat byte buffers omhul.

NSCoding Implementasie

Om NSCoding te implementeer, moet 'n klas van NSObject erf of gemerk wees as @objc. Hierdie protokol vereis die implementering van twee metodes vir die kodering en dekodering van instansie veranderlikes:

swift
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)
}
}

Verbetering van Sekuriteit met NSSecureCoding

Om kwesbaarhede te verminder waar aanvallers data in reeds gebou objekte inspuit, bied NSSecureCoding 'n verbeterde protokol. Klasse wat aan NSSecureCoding voldoen, moet die tipe objekte tydens dekodering verifieer, wat verseker dat slegs die verwagte objektipe geïnstantieer word. Dit is egter belangrik om op te let dat terwyl NSSecureCoding tipe veiligheid verbeter, dit nie data enkripteer of die integriteit daarvan verseker nie, wat addisionele maatreëls vereis om sensitiewe inligting te beskerm:

swift
static var supportsSecureCoding: Bool {
return true
}

let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")

Data-argivering met NSKeyedArchiver

NSKeyedArchiver en sy teenhanger, NSKeyedUnarchiver, stel in staat om voorwerpe in 'n lêer te kodifiseer en dit later te herwin. Hierdie meganisme is nuttig vir die volharding van voorwerpe:

swift
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint

Gebruik van Codable vir Vereenvoudigde Serialisering

Swift se Codable protokol kombineer Decodable en Encodable, wat die kodering en dekodering van voorwerpe soos String, Int, Double, ens., vergemaklik sonder ekstra moeite:

swift
struct CustomPointStruct: Codable {
var x: Double
var name: String
}

Hierdie benadering ondersteun eenvoudige serialisering na en van eiendomslijste en JSON, wat datahantering in Swift-toepassings verbeter.

JSON en XML Kodering Alternatiewe

Benewens inheemse ondersteuning, bied verskeie derdeparty-biblioteke JSON en XML kodering/ontkodering vermoëns, elk met sy eie prestasiekenmerke en sekuriteitsoorwegings. Dit is noodsaaklik om hierdie biblioteke versigtig te kies, veral om kwesbaarhede soos XXE (XML Externe Entiteite) aanvalle te verminder deur parsers te konfigureer om eksterne entiteitverwerking te voorkom.

Sekuriteitsoorwegings

Wanneer data geserialiseer word, veral na die lêerstelsel, is dit noodsaaklik om waaksaam te wees oor die potensiële insluiting van sensitiewe inligting. Geserialiseerde data, indien onderskep of verkeerd hanteer, kan toepassings blootstel aan risiko's soos ongeoorloofde aksies of datalekke. Dit word aanbeveel om geënkripteerde en ondertekende geserialiseerde data te gebruik om sekuriteit te verbeter.

Verwysings

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks