iOS Serialisation and Encoding
Code et plus d'informations sur https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
Sérialisation d'objets dans le développement iOS
En iOS, la sérialisation d'objets consiste à convertir des objets dans un format pouvant être facilement stocké ou transmis, puis à les reconstruire à partir de ce format en cas de besoin. Deux protocoles principaux, NSCoding
et NSSecureCoding
, facilitent ce processus pour les sous-classes Objective-C ou NSObject
, permettant aux objets d'être sérialisés en NSData
, un format qui enveloppe des tampons d'octets.
Implémentation de NSCoding
NSCoding
Pour implémenter NSCoding
, une classe doit hériter de NSObject
ou être marquée comme @objc
. Ce protocole exige l'implémentation de deux méthodes pour encoder et décoder les variables d'instance :
Améliorer la sécurité avec NSSecureCoding
NSSecureCoding
Pour atténuer les vulnérabilités où les attaquants injectent des données dans des objets déjà construits, NSSecureCoding
offre un protocole amélioré. Les classes conformes à NSSecureCoding
doivent vérifier le type d'objets lors du décodage, garantissant que seuls les types d'objets attendus sont instanciés. Cependant, il est crucial de noter que bien que NSSecureCoding
améliore la sécurité des types, il n'encrypte pas les données ou n'assure pas leur intégrité, nécessitant des mesures supplémentaires pour protéger les informations sensibles:
Archivage de données avec NSKeyedArchiver
NSKeyedArchiver
NSKeyedArchiver
et son homologue, NSKeyedUnarchiver
, permettent d'encoder des objets dans un fichier et de les récupérer ultérieurement. Ce mécanisme est utile pour persister des objets :
Utilisation de Codable
pour une sérialisation simplifiée
Codable
pour une sérialisation simplifiéeLe protocole Codable
de Swift combine Decodable
et Encodable
, facilitant l'encodage et le décodage d'objets tels que String
, Int
, Double
, etc., sans effort supplémentaire :
Cet approche prend en charge la sérialisation simple vers et depuis des listes de propriétés et du JSON, améliorant la manipulation des données dans les applications Swift.
Alternatives d'encodage JSON et XML
Au-delà du support natif, plusieurs bibliothèques tierces offrent des capacités d'encodage/décodage JSON et XML, chacune avec ses propres caractéristiques de performance et considérations de sécurité. Il est impératif de sélectionner soigneusement ces bibliothèques, en particulier pour atténuer les vulnérabilités telles que les attaques XXE (Entités Externes XML) en configurant les analyseurs pour empêcher le traitement des entités externes.
Considérations de sécurité
Lors de la sérialisation des données, en particulier vers le système de fichiers, il est essentiel de rester vigilant quant à l'éventuelle inclusion d'informations sensibles. Les données sérialisées, si elles sont interceptées ou mal gérées, peuvent exposer les applications à des risques tels que des actions non autorisées ou des fuites de données. Il est recommandé de chiffrer et de signer les données sérialisées pour renforcer la sécurité.
Références
Last updated