Swift एप्लिकेशन सुरक्षा: शुरुआती लोगों के लिए शीर्ष 10 कमजोरियाँ

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

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

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

Swift एप्लिकेशन सुरक्षा: शुरुआती लोगों के लिए शीर्ष 10 कमजोरियाँ

\n\n

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

\n\n

1. UserDefaults में डेटा का असुरक्षित भंडारण

\n

कई नौसिखिए गोपनीय डेटा (पासवर्ड, टोकन) को UserDefaults में सहेजते हैं। यह एक सार्वजनिक क्षेत्र है, डेटा खुले रूप में संग्रहीत होता है।

\n
// ❌ खतरनाक\nUserDefaults.standard.set("secret_password", forKey: "userPass")\n\n// ✅ सुरक्षित — Keychain का उपयोग करें\nimport Security\nlet query: [String: Any] = [\n    kSecClass as String: kSecClassGenericPassword,\n    kSecAttrAccount as String: "userPass",\n    kSecValueData as String: "secret_password".data(using: .utf8)!\n]\nSecItemAdd(query as CFDictionary, nil)\n
\n\n

2. Core Data में SQL इंजेक्शन

\n

उपयोगकर्ता इनपुट के साथ स्ट्रिंग प्रेडिकेट का उपयोग SQL इंजेक्शन का रास्ता खोलता है।

\n
// ❌ कमजोर\nlet input = "admin' OR '1'='1"\nlet predicate = NSPredicate(format: "name == %@", input)\n\n// ✅ सुरक्षित — पैरामीटराइज़्ड क्वेरी का उपयोग करें\nlet safePredicate = NSPredicate(format: "name == %@", input)\n
\n\n

3. इनपुट सत्यापन का अभाव

\n

उपयोगकर्ता इनपुट पर भरोसा करना एक बड़ी गलती है। हमलावर टेक्स्ट फ़ील्ड के माध्यम से दुर्भावनापूर्ण डेटा भेज सकता है।

\n
func processUserInput(_ text: String) {\n    // ❌ किसी भी इनपुट को अनुमति देना\n    let url = URL(string: "https://api.example.com/search?q=\\(text)")\n    \n    // ✅ जाँचें और एस्केप करें\n    guard let encoded = text.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { return }\n    let safeUrl = URL(string: "https://api.example.com/search?q=\\(encoded)")\n}\n
\n\n

4. असुरक्षित नेटवर्क कनेक्शन (HTTP बनाम HTTPS)

\n

HTTP का उपयोग डेटा को इंटरसेप्ट करने के लिए कमजोर बनाता है। हमेशा HTTPS का उपयोग करें।

\n
// ❌ खतरनाक\nlet config = URLSessionConfiguration.default\nconfig.waitsForConnectivity = false\n\n// ✅ सुरक्षित — HTTPS को अनिवार्य करें\nlet config = URLSessionConfiguration.default\nconfig.connectionProxyDictionary?.removeAll()\nconfig.tlsMinimumSupportedProtocolVersion = .TLSv12\n
\n\n

5. लॉग के माध्यम से डेटा लीक

\n

डेवलपर्स अक्सर प्रोडक्शन बिल्ड में गोपनीय डेटा के साथ print() छोड़ देते हैं।

\n
// ❌ खतरनाक\nprint("User token: \\(token)")\n\n// ✅ सुरक्षित — सशर्त संकलन का उपयोग करें\n#if DEBUG\nprint("Debug: token length = \\(token.count)")\n#endif\n
\n\n

6. गलत मेमोरी प्रबंधन (Retain Cycles)

\n

मेमोरी लीक DoS हमलों का कारण बन सकती है। क्लोजर में कमजोर संदर्भों का उपयोग करें।

\n
// ❌ मेमोरी लीक\nclass ViewController: UIViewController {\n    var handler: (() -> Void)?\n    override func viewDidLoad() {\n        handler = {\n            self.view.backgroundColor = .red // मजबूत संदर्भ\n        }\n    }\n}\n\n// ✅ सुरक्षित — कमजोर संदर्भ\nhandler = { [weak self] in\n    self?.view.backgroundColor = .red\n}\n
\n\n

7. URL स्कीम प्रमाणीकरण की कमी

\n

धोखाधड़ी वाले एप्लिकेशन आपके एप्लिकेशन की URL स्कीम को इंटरसेप्ट कर सकते हैं।

\n
// ❌ कमजोर\nfunc application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {\n    // किसी भी URL को संसाधित करें\n    return true\n}\n\n// ✅ सुरक्षित — स्रोत की जाँच करें\nfunc application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {\n    guard let sourceApp = options[.sourceApplication] as? String,\n          sourceApp == "com.trusted.app" else {\n        return false\n    }\n    // URL प्रसंस्करण\n    return true\n}\n
\n\n

ब्लॉग

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