tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Code और अधिक जानकारी https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence में।
iOS विकास में ऑब्जेक्ट सीरियलाइजेशन
iOS में, ऑब्जेक्ट सीरियलाइजेशन का अर्थ है ऑब्जेक्ट्स को एक ऐसे प्रारूप में परिवर्तित करना जिसे आसानी से संग्रहीत या प्रसारित किया जा सके, और फिर आवश्यकता पड़ने पर इस प्रारूप से उन्हें पुनर्निर्मित करना। दो मुख्य प्रोटोकॉल, NSCoding
और NSSecureCoding
, इस प्रक्रिया को Objective-C या NSObject
उपवर्गों के लिए सरल बनाते हैं, जिससे ऑब्जेक्ट्स को NSData
में सीरियलाइज किया जा सकता है, जो बाइट बफर को लपेटता है।
NSCoding
कार्यान्वयन
NSCoding
को लागू करने के लिए, एक कक्षा को NSObject
से विरासत में लेना चाहिए या इसे @objc
के रूप में चिह्नित किया जाना चाहिए। इस प्रोटोकॉल में इंस्टेंस वेरिएबल्स को एन्कोडिंग और डिकोडिंग के लिए दो विधियों का कार्यान्वयन अनिवार्य है:
class CustomPoint: NSObject, NSCoding {
var x: Double = 0.0
var name: String = ""
func encode(with aCoder: NSCoder) {
aCoder.encode(x, forKey: "x")
aCoder.encode(name, forKey: "name")
}
required convenience init?(coder aDecoder: NSCoder) {
guard let name = aDecoder.decodeObject(forKey: "name") as? String else { return nil }
self.init(x: aDecoder.decodeDouble(forKey: "x"), name: name)
}
}
NSSecureCoding
के साथ सुरक्षा बढ़ाना
हमलावरों द्वारा पहले से निर्मित वस्तुओं में डेटा इंजेक्ट करने की कमजोरियों को कम करने के लिए, NSSecureCoding
एक उन्नत प्रोटोकॉल प्रदान करता है। NSSecureCoding
का पालन करने वाली कक्षाओं को डिकोडिंग के दौरान वस्तुओं के प्रकार की पुष्टि करनी चाहिए, यह सुनिश्चित करते हुए कि केवल अपेक्षित वस्तु प्रकारों को ही स्थापित किया जाए। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि जबकि NSSecureCoding
प्रकार की सुरक्षा को बढ़ाता है, यह डेटा को एन्क्रिप्ट नहीं करता है या इसकी अखंडता सुनिश्चित नहीं करता है, संवेदनशील जानकारी की सुरक्षा के लिए अतिरिक्त उपायों की आवश्यकता होती है:
static var supportsSecureCoding: Bool {
return true
}
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
Data Archiving with NSKeyedArchiver
NSKeyedArchiver
और इसके समकक्ष, NSKeyedUnarchiver
, वस्तुओं को एक फ़ाइल में एन्कोड करने और बाद में उन्हें पुनः प्राप्त करने की अनुमति देते हैं। यह तंत्र वस्तुओं को स्थायी बनाने के लिए उपयोगी है:
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
Using Codable
for Simplified Serialization
स्विफ्ट का Codable
प्रोटोकॉल Decodable
और Encodable
को मिलाता है, जिससे String
, Int
, Double
आदि जैसे ऑब्जेक्ट्स का एन्कोडिंग और डिकोडिंग बिना अतिरिक्त प्रयास के किया जा सकता है:
struct CustomPointStruct: Codable {
var x: Double
var name: String
}
यह दृष्टिकोण प्रॉपर्टी सूचियों और JSON के लिए सीधे सीरियलाइजेशन का समर्थन करता है, जो Swift अनुप्रयोगों में डेटा प्रबंधन को बढ़ाता है।
JSON और XML एन्कोडिंग विकल्प
स्थानीय समर्थन के अलावा, कई तृतीय-पक्ष पुस्तकालय JSON और XML एन्कोडिंग/डिकोडिंग क्षमताएँ प्रदान करते हैं, प्रत्येक के अपने प्रदर्शन विशेषताएँ और सुरक्षा विचार होते हैं। इन पुस्तकालयों का सावधानीपूर्वक चयन करना अनिवार्य है, विशेष रूप से XXE (XML बाहरी संस्थाएँ) हमलों जैसी कमजोरियों को कम करने के लिए पार्सरों को कॉन्फ़िगर करके बाहरी संस्थाओं की प्रोसेसिंग को रोकना।
सुरक्षा विचार
डेटा को सीरियलाइज करते समय, विशेष रूप से फ़ाइल सिस्टम के लिए, संवेदनशील जानकारी के संभावित समावेश के प्रति सतर्क रहना आवश्यक है। सीरियलाइज्ड डेटा, यदि इंटरसेप्ट किया जाता है या गलत तरीके से संभाला जाता है, तो अनुप्रयोगों को अनधिकृत क्रियाओं या डेटा लीक जैसे जोखिमों के प्रति उजागर कर सकता है। सुरक्षा बढ़ाने के लिए सीरियलाइज्ड डेटा को एन्क्रिप्ट और साइन करना अनुशंसित है।
संदर्भ
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।