Swift अनुप्रयोग सुरक्षा: iOS/macOS के लिए शीर्ष 10 कमजोरियाँ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें
```html

परिचय: Swift अनुप्रयोगों की सुरक्षा क्यों महत्वपूर्ण है

Swift — Apple द्वारा iOS, macOS, watchOS और tvOS के लिए अनुप्रयोग विकसित करने हेतु बनाई गई एक शक्तिशाली और आधुनिक प्रोग्रामिंग भाषा है। अंतर्निहित सुरक्षा तंत्र (ARC, सुरक्षित मेमोरी प्रबंधन, वैकल्पिक प्रकार) के बावजूद, डेवलपर्स की त्रुटियों के कारण हर साल हजारों अनुप्रयोग हमलों का शिकार हो जाते हैं। OWASP Mobile Top 10 रिपोर्ट के अनुसार, मोबाइल अनुप्रयोगों में अधिकांश कमजोरियाँ क्लाइंट पक्ष पर उत्पन्न होती हैं। इस लेख में, हम Swift अनुप्रयोगों की 10 सबसे सामान्य कमजोरियों का विश्लेषण करेंगे, कोड उदाहरण प्रस्तुत करेंगे और दिखाएंगे कि उनसे कैसे बचा जाए।



1. असुरक्षित डेटा भंडारण (Insecure Data Storage)

समस्या

डेवलपर्स अक्सर संवेदनशील डेटा (टोकन, पासवर्ड, API कुंजियाँ) को बिना एन्क्रिप्शन के UserDefaults, Plist-फ़ाइलों या Core Data में सहेजते हैं। जेलब्रेक किए गए उपकरणों पर, हमलावर आसानी से उन तक पहुँच प्राप्त कर सकता है।

असुरक्षित कोड का उदाहरण

// असुरक्षित कोडUserDefaults.standard.set("secret_token_123", forKey: "api_token")UserDefaults.standard.set("password123", forKey: "user_password")

समाधान

संवेदनशील डेटा संग्रहीत करने के लिए Keychain का उपयोग करें। Swift में KeychainSwift या Security फ्रेमवर्क जैसी सुविधाजनक रैपर उपलब्ध हैं।

// Keychain के साथ सुरक्षित भंडारणimport KeychainSwift

let keychain = KeychainSwift()keychain.set("secret_token_123", forKey: "api_token")keychain.set("password123", forKey: "user_password", withAccess: .accessibleWhenUnlockedThisDeviceOnly)


2. कोड इंजेक्शन और SQL इंजेक्शन (Code Injection & SQL Injection)

समस्या

यदि आपका अनुप्रयोग SQLite, NSPredicate के साथ Core Data या वेब सामग्री प्रदर्शित करने के लिए WebView का उपयोग करता है, तो हमलावर उपयोगकर्ता इनपुट के माध्यम से दुर्भावनापूर्ण कोड इंजेक्ट कर सकता है।

असुरक्षित कोड का उदाहरण

// SQLite के लिए असुरक्षित क्वेरीlet userInput = "1' OR '1'='1"let query = "SELECT * FROM users WHERE id = '\\(userInput)'"

समाधान

पैरामीटरीकृत क्वेरी या सुरक्षित प्रतिस्थापन के साथ NSPredicate का उपयोग करें।

// पैरामीटर के साथ सुरक्षित क्वेरीlet query = "SELECT * FROM users WHERE id = ?"let statement = try db.prepare(query)try statement.bind(1, userInput)


3. असुरक्षित नेटवर्क संचार (Insecure Network Communication)

समस्या

HTTPS के बजाय HTTP का उपयोग करना, SSL प्रमाणपत्रों (App Transport Security) को अनदेखा करना या बिना एन्क्रिप्शन के डेटा भेजना।

असुरक्षित कोड का उदाहरण

// असुरक्षित कोड: ATS को अक्षम करनाlet url = URL(string: "http://example.com/api/login")!let task = URLSession.shared.dataTask(with: url) { data, response, error in    // असुरक्षित डेटा की प्रोसेसिंग}

समाधान

Info.plist में App Transport Security (ATS) कॉन्फ़िगर करें और HTTPS का उपयोग करें। प्रमाणपत्र सत्यापन के लिए SSL pinning लागू करें।

// SSL Pinning के साथ सुरक्षित अनुरोध (Alamofire के साथ उदाहरण)let evaluator = PinnedCertificatesTrustEvaluator(certificates: [certificate])let session = Session(serverTrustManager: ServerTrustManager(evaluators: ["example.com": evaluator]))session.request("https://example.com/api/login").responseJSON { response in    // सुरक्षित डेटा की प्रोसेसिंग}


4. WebView के माध्यम से इंजेक्शन (WebView Injection)

समस्या

बिना सैनिटाइज़ेशन के WKWebView में उपयोगकर्ता डेटा के साथ HTML सामग्री लोड करने से XSS हमले और कुकीज़ की चोरी हो सकती है।

असुरक्षित कोड का उदाहरण

// असुरक्षित कोडlet userComment = "<script>alert('XSS')</script>"let html
```                

ब्लॉग

पुस्तक अनुशंसाएँ