<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Kod i więcej informacji na stronie [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence).
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.
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`**
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` 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
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:
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.
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.
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.