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
підвищує безпеку типів, воно не шифрує дані або не гарантує їх цілісність, що вимагає додаткових заходів для захисту конфіденційної інформації:
Архівування даних за допомогою NSKeyedArchiver
NSKeyedArchiver
NSKeyedArchiver
та його аналог, NSKeyedUnarchiver
, дозволяють кодувати об'єкти у файлі та пізніше отримувати їх. Цей механізм корисний для збереження об'єктів:
Використання Codable
для спрощення серіалізації
Codable
для спрощення серіалізаціїПротокол Codable
у Swift поєднує Decodable
та Encodable
, сприяючи кодуванню та декодуванню об'єктів, таких як String
, Int
, Double
і т.д., без додаткових зусиль:
Цей підхід підтримує просту серіалізацію до та з властивих списків та JSON, покращуючи обробку даних в додатках Swift.
Альтернативи кодування JSON та XML
Поза вбудованою підтримкою, кілька сторонніх бібліотек пропонують можливості кодування/декодування JSON та XML, кожна з власними характеристиками продуктивності та врахуванням безпеки. Надзвичайно важливо ретельно вибирати ці бібліотеки, особливо для запобігання вразливостей, таких як атаки XXE (зовнішні сутності XML), налаштовуючи парсери для запобігання обробки зовнішніх сутностей.
Врахування безпеки
Під час серіалізації даних, особливо на файлову систему, важливо бути бджливими стосовно можливого включення чутливої інформації. Серіалізовані дані, якщо вони потраплять у руки зловмисників або будуть неправильно оброблені, можуть викласти додатки ризикам, таким як несанкціоновані дії або витік даних. Рекомендується шифрування та підписання серіалізованих даних для підвищення безпеки.
Посилання
Last updated