iOS Serialisation and Encoding

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

हैकट्रिक्स का समर्थन करने के अन्य तरीके:

कोड और अधिक जानकारी https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence.

iOS विकास में ऑब्ज

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")

डेटा आर्काइविंग NSKeyedArchiver के साथ

NSKeyedArchiver और इसका सहकारी, NSKeyedUnarchiver, ऑब्जेक्ट्स को एक फ़ाइल में एन्कोड करने और बाद में उन्हें पुनः प्राप्त करने की सुविधा प्रदान करते हैं। यह तंत्र ऑब्जेक्ट्स को स्थायी रूप से सुरक्षित करने के लिए उपयोगी है:

NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint

Codable का उपयोग सरल सिरियलाइज़ेशन के लिए

स्विफ्ट का Codable प्रोटोकॉल Decodable और Encodable को जोड़ता है, जो String, Int, Double आदि जैसे ऑब्ज

struct CustomPointStruct: Codable {
var x: Double
var name: String
}

यह दृष्टिकोण सीधे सीरीयलाइजेशन का समर्थन करता है और प्रॉपर्टी सूचियों और JSON से डेटा हैंडलिंग को बढ़ावा देता है।

JSON और XML एन्कोडिंग विकल्प

नेटिव समर्थन के अतिरिक्त, कई थर्ड-पार्टी लाइब्रेरी JSON और XML एन्कोडिंग/डिकोडिंग क्षमताएँ प्रदान करती हैं, प्रत्येक के अपने प्रदर्शन विशेषताएँ और सुरक्षा विचार होते हैं। विशेष रूप से XXE (XML External Entities) हमलों जैसी भेदभाव से बचने के लिए पार्सर को विदेशी एंटिटी प्रोसेसिंग रोकने के लिए कॉन्फ़िगर करके इन लाइब्रेरीज़ का चयन सावधानीपूर्वक करना आवश्यक है।

सुरक्षा विचार

डेटा को सीरीयलाइज करते समय, विशेष रूप से फ़ाइल सिस्टम में, संवेदनशील जानकारी के संभावित समावेश के बारे में सतर्क रहना महत्वपूर्ण है। सीरीयलाइज़ किए गए डेटा को अगर अवैध रूप से हैंडल किया जाए या अधिकारहीन क्रियाओं या डेटा लीकेज़ जैसे जोखिमों को एप्लिकेशन के सामने खोल सकता है। सीरीयलाइज़ किए गए डेटा को एन्क्रिप्ट और साइन करना सुरक्षा को बढ़ाने के लिए सिफारिश किया जाता है।

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated