iOS Serialisation and Encoding
Code and more information in https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
Сериалізація об'єктів у розробці iOS
У iOS, сериалізація об'єктів передбачає перетворення об'єктів у формат, який можна легко зберігати або передавати, а потім відновлювати їх з цього формату за потреби. Два основні протоколи, NSCoding
та NSSecureCoding
, полегшують цей процес для Objective-C або підкласів NSObject
, дозволяючи об'єктам бути серіалізованими в NSData
, формат, який обгортає байтові буфери.
NSCoding
Реалізація
NSCoding
РеалізаціяЩоб реалізувати NSCoding
, клас повинен успадковувати від NSObject
або бути позначеним як @objc
. Цей протокол вимагає реалізації двох методів для кодування та декодування змінних екземпляра:
Покращення безпеки з NSSecureCoding
NSSecureCoding
Щоб зменшити вразливості, коли зловмисники впроваджують дані в уже створені об'єкти, NSSecureCoding
пропонує покращений протокол. Класи, що відповідають NSSecureCoding
, повинні перевіряти тип об'єктів під час декодування, забезпечуючи, що лише очікувані типи об'єктів створюються. Однак важливо зазначити, що хоча NSSecureCoding
покращує безпеку типів, він не шифрує дані і не забезпечує їх цілісність, що вимагає додаткових заходів для захисту чутливої інформації:
Data Archiving with NSKeyedArchiver
NSKeyedArchiver
NSKeyedArchiver
та його аналог, NSKeyedUnarchiver
, дозволяють кодувати об'єкти у файл і пізніше їх отримувати. Цей механізм корисний для збереження об'єктів:
Використання Codable
для спрощеної серіалізації
Codable
для спрощеної серіалізаціїПротокол Codable
у Swift поєднує Decodable
та Encodable
, полегшуючи кодування та декодування об'єктів, таких як String
, Int
, Double
тощо, без додаткових зусиль:
Цей підхід підтримує просту серіалізацію до та з властивісних списків і JSON, покращуючи обробку даних у Swift-додатках.
Альтернативи кодування JSON та XML
Окрім нативної підтримки, кілька сторонніх бібліотек пропонують можливості кодування/декодування JSON та XML, кожна з яких має свої характеристики продуктивності та міркування безпеки. Важливо ретельно обирати ці бібліотеки, особливо для зменшення вразливостей, таких як атаки XXE (XML External Entities), налаштовуючи парсери для запобігання обробці зовнішніх сутностей.
Міркування безпеки
При серіалізації даних, особливо до файлової системи, важливо бути уважним до потенційного включення чутливої інформації. Серіалізовані дані, якщо їх перехопити або неправильно обробити, можуть піддати додатки ризикам, таким як несанкціоновані дії або витік даних. Рекомендується шифрування та підписування серіалізованих даних для підвищення безпеки.
Посилання
Last updated