iOS Serialisation and Encoding
Κώδικας και περισσότερες πληροφορίες στο https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
Αντικειμενική Σειριοποίηση στην Ανάπτυξη iOS
Στο iOS, η αντικειμενική σειριοποίηση περιλαμβάνει τη μετατροπή αντικειμένων σε ένα μορφότυπο που μπορεί να αποθηκευτεί ή να μεταδοθεί εύκολα, και στη συνέχεια την ανακατασκευή τους από αυτόν τον μορφότυπο όταν απαιτείται. Δύο κύρια πρωτόκολλα, το NSCoding
και το NSSecureCoding
, διευκολύνουν αυτήν τη διαδικασία για τις υποκλάσεις Objective-C ή NSObject
, επιτρέποντας την σειριοποίηση των αντικειμένων σε μορφή NSData
, ένα μορφότυπο που εγκλείει δυαδικά buffers.
Υλοποίηση 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 External Entities) με τη ρύθμιση των αναλυτών για την αποτροπή της επεξεργασίας εξωτερικών οντοτήτων.
Ασφαλείς σκέψεις
Όταν γίνεται σειριοποίηση δεδομένων, ιδιαίτερα προς το σύστημα αρχείων, είναι απαραίτητο να είστε προσεκτικοί για την πιθανή περιλαμβανόμενη ευαίσθητη πληροφορία. Τα σειριοποιημένα δεδομένα, αν παρακολουθηθούν ή χειριστούν εσφαλμένα, μπορούν να αποκαλύψουν τις εφαρμογές σε κινδύνους όπως μη εξουσιοδοτημένες ενέργειες ή διαρροή δεδομένων. Συνιστάται η κρυπτογράφηση και η υπογραφή των σειριοποιημένων δεδομένων για την ενίσχυση της ασφάλειας.
Αναφορές
Last updated