iOS Serialisation and Encoding
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Code and more information in https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.
iOS में, ऑब्जेक्ट सीरियलाइजेशन का अर्थ है ऑब्जेक्ट्स को एक ऐसे प्रारूप में परिवर्तित करना जिसे आसानी से संग्रहीत या प्रसारित किया जा सके, और फिर आवश्यकता पड़ने पर इस प्रारूप से उन्हें पुनर्निर्मित करना। दो मुख्य प्रोटोकॉल, NSCoding
और NSSecureCoding
, इस प्रक्रिया को Objective-C या NSObject
उपवर्गों के लिए सरल बनाते हैं, जिससे ऑब्जेक्ट्स को NSData
में सीरियलाइज किया जा सकता है, जो बाइट बफर को लपेटता है।
NSCoding
कार्यान्वयनNSCoding
को लागू करने के लिए, एक कक्षा को NSObject
से विरासत में लेना चाहिए या @objc
के रूप में चिह्नित किया जाना चाहिए। यह प्रोटोकॉल उदाहरण चर को एन्कोडिंग और डिकोडिंग के लिए दो विधियों के कार्यान्वयन की मांग करता है:
NSSecureCoding
के साथ सुरक्षा बढ़ानाहमलावरों द्वारा पहले से निर्मित वस्तुओं में डेटा इंजेक्ट करने की कमजोरियों को कम करने के लिए, NSSecureCoding
एक उन्नत प्रोटोकॉल प्रदान करता है। NSSecureCoding
का पालन करने वाली कक्षाओं को डिकोडिंग के दौरान वस्तुओं के प्रकार की पुष्टि करनी चाहिए, यह सुनिश्चित करते हुए कि केवल अपेक्षित वस्तु प्रकारों का निर्माण किया जाए। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि जबकि NSSecureCoding
प्रकार की सुरक्षा को बढ़ाता है, यह डेटा को एन्क्रिप्ट नहीं करता है या इसकी अखंडता सुनिश्चित नहीं करता है, संवेदनशील जानकारी की सुरक्षा के लिए अतिरिक्त उपायों की आवश्यकता होती है:
NSKeyedArchiver
NSKeyedArchiver
और इसका समकक्ष, NSKeyedUnarchiver
, वस्तुओं को एक फ़ाइल में एन्कोड करने और बाद में उन्हें पुनः प्राप्त करने की अनुमति देते हैं। यह तंत्र वस्तुओं को स्थायी बनाने के लिए उपयोगी है:
Codable
for Simplified Serializationस्विफ्ट का Codable
प्रोटोकॉल Decodable
और Encodable
को मिलाता है, जिससे String
, Int
, Double
आदि जैसे ऑब्जेक्ट्स का एन्कोडिंग और डिकोडिंग बिना अतिरिक्त प्रयास के किया जा सकता है:
यह दृष्टिकोण प्रॉपर्टी सूचियों और JSON के लिए सीधे सीरियलाइजेशन का समर्थन करता है, जो स्विफ्ट अनुप्रयोगों में डेटा प्रबंधन को बढ़ाता है।
स्थानीय समर्थन के अलावा, कई तृतीय-पक्ष पुस्तकालय JSON और XML एन्कोडिंग/डिकोडिंग क्षमताएँ प्रदान करते हैं, प्रत्येक के अपने प्रदर्शन विशेषताएँ और सुरक्षा विचार होते हैं। इन पुस्तकालयों का सावधानीपूर्वक चयन करना अनिवार्य है, विशेष रूप से XXE (XML एक्सटर्नल एंटिटीज़) हमलों जैसी कमजोरियों को कम करने के लिए पार्सर्स को कॉन्फ़िगर करके बाहरी एंटिटी प्रोसेसिंग को रोकना।
डेटा को सीरियलाइज करते समय, विशेष रूप से फ़ाइल सिस्टम के लिए, संवेदनशील जानकारी के संभावित समावेश के प्रति सतर्क रहना आवश्यक है। सीरियलाइज्ड डेटा, यदि इंटरसेप्ट किया जाता है या गलत तरीके से संभाला जाता है, तो अनुप्रयोगों को अनधिकृत क्रियाओं या डेटा लीक जैसे जोखिमों के प्रति उजागर कर सकता है। सुरक्षा बढ़ाने के लिए सीरियलाइज्ड डेटा को एन्क्रिप्ट और साइन करना अनुशंसित है।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)