Swift अनुप्रयोग सुरक्षा: शीर्ष 10 कमजोरियाँ और सुरक्षा के तरीके

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

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

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

Swift अनुप्रयोग सुरक्षा: शीर्ष 10 कमजोरियाँ और सुरक्षा के तरीके



iOS और macOS के लिए Swift में विकास के लिए सुरक्षा पर विशेष ध्यान देने की आवश्यकता है। एक छोटी सी गलती भी डेटा लीक, हैकिंग या डिवाइस से समझौता कर सकती है। इस लेख में, हम Swift अनुप्रयोगों में 10 सबसे सामान्य कमजोरियों पर चर्चा करेंगे, खतरनाक कोड के उदाहरण दिखाएंगे और उन्हें दूर करने के लिए व्यावहारिक सुझाव देंगे।



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

सबसे आम गलती बिना एन्क्रिप्शन के UserDefaults या Plist फ़ाइलों में संवेदनशील डेटा को सहेजना है।



समस्याग्रस्त कोड:

UserDefaults.standard.set("password123", forKey: "userPassword")UserDefaults.standard.synchronize()


सुरक्षित समाधान: Keychain Services या Data Protection API का उपयोग करें।



import Security

func savePassword(_ password: String, for account: String) { let data = password.data(using: .utf8)! let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrAccount as String: account, kSecValueData as String: data, kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly ] SecItemAdd(query as CFDictionary, nil)}


2. इनपुट सत्यापन का अभाव (Input Validation)

उपयोगकर्ता इनपुट में अक्सर दुर्भावनापूर्ण डेटा होता है। हमेशा इनपुट की जाँच करें और उसे साफ करें।



SQL इंजेक्शन का उदाहरण:

let query = "SELECT * FROM users WHERE name = '\\(userInput)'" // खतरनाक!


सुरक्षा: पैरामीटराइज़्ड क्वेरी का उपयोग करें।

let query = "SELECT * FROM users WHERE name = ?"let statement = try database.prepare(query)try statement.bind([userInput])


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

HTTPS के बजाय HTTP का उपयोग करना, SSL प्रमाणपत्रों को अनदेखा करना।



खतरनाक कोड:

let url = URL(string: "http://example.com/api")! // HTTP, HTTPS नहींlet task = URLSession.shared.dataTask(with: url) { data, response, error in    // डेटा प्रोसेसिंग}


सुरक्षित दृष्टिकोण:

let url = URL(string: "https://example.com/api")!let config = URLSessionConfiguration.defaultconfig.tlsMinimumSupportedProtocolVersion = .TLSv12let session = URLSession(configuration: config)let task = session.dataTask(with: url) { data, response, error in    guard let httpResponse = response as? HTTPURLResponse,          httpResponse.statusCode == 200 else {        return    }    // डेटा प्रोसेसिंग}task.resume()


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

यदि आप बिना प्रतिबंधों के WKWebView का उपयोग करते हैं, तो हमलावर JavaScript कोड निष्पादित कर सकता है।



कमजोर कोड:

webView.loadHTMLString(htmlContent, baseURL: nil)


सुरक्षा: JavaScript को अक्षम करें या Content Security Policy का उपयोग करें।

let config = WKWebViewConfiguration()let preferences = WKPreferences()preferences.javaScriptEnabled = falseconfig.preferences = preferenceslet webView = WKWebView(frame: .zero, configuration: config)


5. असुरक्षित API कुंजियाँ और टोकन (Hardcoded Secrets)

API कुंजियाँ, टोकन या पासवर्ड को कभी भी स्रोत कोड में संग्रहीत न करें।



गलत:

let apiKey = "sk_live_1234567890abcdef"


सही: .env फ़ाइलों, सर्वर प्रमाणीकरण या क्लाउड सेवाओं (जैसे AWS Secrets Manager) का उपयोग करें।



// Info.plist में एन्क्रिप्टेड कुंजीif let apiKey = Bundle.main.object(forInfoDictionaryKey: "API_KEY") as? String {    // कुंजी का उपयोग करें}


6. रिवर्स इंजीनियरिंग से अपर्याप्त सुरक्षा

ब्लॉग

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