iOS Serialisation and Encoding
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
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:
Wzmacnianie bezpieczeństwa za pomocą NSSecureCoding
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:
Archiwizacja danych za pomocą NSKeyedArchiver
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:
Używanie Codable
do uproszczonej serializacji
Codable
do uproszczonej serializacjiProtokół 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:
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
Last updated