6.2 KiB
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
Kod i więcej informacji na stronie https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
Serializacja obiektów w rozwoju iOS
W iOS, serializacja obiektów polega na konwertowaniu obiektów na format, który można łatwo przechowywać lub przesyłać, a następnie odtwarzaniu ich z tego formatu, gdy są potrzebne. Dwa główne protokoły, NSCoding
i NSSecureCoding
, ułatwiają ten proces dla klas Objective-C lub NSObject
, pozwalając na serializację obiektów do formatu NSData
, który zawiera bufor bajtów.
Implementacja NSCoding
Aby zaimplementować NSCoding
, klasa musi dziedziczyć po NSObject
lub być oznaczona jako @objc
. Ten protokół wymaga implementacji dwóch metod do kodowania i dekodowania zmiennych instancji:
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)
}
}
Wzmacnianie bezpieczeństwa za pomocą NSSecureCoding
Aby złagodzić podatności, w których atakujący wstrzykują dane do już skonstruowanych obiektów, NSSecureCoding
oferuje ulepszony protokół. Klasy zgodne z NSSecureCoding
muszą zweryfikować typ obiektów podczas dekodowania, zapewniając, że są tworzone tylko oczekiwane typy obiektów. Jednak ważne jest zauważenie, że chociaż NSSecureCoding
zwiększa bezpieczeństwo typów, nie szyfruje danych ani nie zapewnia ich integralności, co wymaga dodatkowych środków ochrony poufnych informacji:
static var supportsSecureCoding: Bool {
return true
}
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
Archiwizacja danych za pomocą NSKeyedArchiver
NSKeyedArchiver
i jego odpowiednik, NSKeyedUnarchiver
, umożliwiają kodowanie obiektów do pliku i późniejsze ich odtworzenie. Mechanizm ten jest przydatny do trwałego przechowywania obiektów:
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
Używanie Codable
do uproszczonej serializacji
Protokół Codable
w języku Swift łączy Decodable
i Encodable
, ułatwiając kodowanie i dekodowanie obiektów takich jak String
, Int
, Double
, itp., bez dodatkowego wysiłku:
struct CustomPointStruct: Codable {
var x: Double
var name: String
}
To podejście obsługuje proste serializowanie do i z listy właściwości oraz JSON, poprawiając obsługę danych w aplikacjach Swift.
Alternatywy dla kodowania JSON i XML
Oprócz natywnej obsługi, istnieje kilka bibliotek innych firm, które oferują możliwość kodowania/odkodowywania JSON i XML, z różnymi charakterystykami wydajnościowymi i uwzględniającymi bezpieczeństwo. Ważne jest dokładne wybieranie tych bibliotek, zwłaszcza w celu zminimalizowania podatności na ataki XXE (XML External Entities) poprzez konfigurację parserów w celu zapobiegania przetwarzaniu zewnętrznych jednostek.
Uwagi dotyczące bezpieczeństwa
Podczas serializowania danych, zwłaszcza do systemu plików, ważne jest zachowanie czujności wobec potencjalnego uwzględnienia poufnych informacji. Serializowane dane, jeśli zostaną przechwycone lub nieprawidłowo obsłużone, mogą narazić aplikacje na ryzyko takie jak nieautoryzowane działania lub wyciek danych. Zaleca się szyfrowanie i podpisywanie serializowanych danych w celu poprawy bezpieczeństwa.
Odwołania
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do HackTricks i HackTricks Cloud github repos.