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

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

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

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

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



Kotlin एक आधुनिक प्रोग्रामिंग भाषा है जिसका उपयोग Android अनुप्रयोगों, सर्वर समाधानों और मल्टीप्लेटफ़ॉर्म परियोजनाओं के निर्माण के लिए सक्रिय रूप से किया जाता है। हालाँकि, इसकी सख्त टाइपिंग और डिफ़ॉल्ट सुरक्षा के बावजूद, नौसिखिए डेवलपर्स अक्सर ऐसी गलतियाँ करते हैं जो गंभीर कमजोरियों का कारण बन सकती हैं। इस लेख में, हम Kotlin अनुप्रयोगों में शीर्ष 10 सबसे सामान्य सुरक्षा समस्याओं पर चर्चा करेंगे, खतरनाक कोड के उदाहरण दिखाएंगे और उन्हें ठीक करने के लिए सिफारिशें देंगे।



1. SQL इंजेक्शन (SQL Injection)

सबसे पुरानी और खतरनाक कमजोरियों में से एक। यदि आप सीधे SQL क्वेरी में उपयोगकर्ता इनपुट को जोड़ते हैं, तो हमलावर मनमानी कमांड निष्पादित कर सकता है।



// खतरनाक: स्ट्रिंग्स को जोड़नाval query = "SELECT * FROM users WHERE name = '$userInput'"statement.executeQuery(query)

// सुरक्षित: पैरामीटरयुक्त क्वेरी का उपयोगval query = "SELECT * FROM users WHERE name = ?"val preparedStatement = connection.prepareStatement(query)preparedStatement.setString(1, userInput)preparedStatement.executeQuery()


2. पासवर्ड का असुरक्षित भंडारण

पासवर्ड को कभी भी सादे पाठ में न रखें। bcrypt, Argon2 या PBKDF2 का उपयोग करें। Kotlin में, इसके लिए आप spring-security-crypto या हैशिंग के साथ kotlinx-serialization लाइब्रेरी का उपयोग कर सकते हैं।



// खतरनाक: सादे पाठ में भंडारणdata class User(val password: String)

// सुरक्षित: नमक के साथ हैशिंगimport org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder

val encoder = BCryptPasswordEncoder()val hashedPassword = encoder.encode(plainPassword)


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

उपयोगकर्ता से कोई भी डेटा मान्य होना चाहिए। इस नियम को अनदेखा करने से XSS, इंजेक्शन और DoS हमले होते हैं।



// खतरनाक: एस्केपिंग के बिना सीधा आउटपुटfun renderHtml(userInput: String): String {    return "<div>$userInput</div>"}

// सुरक्षित: HTML एस्केपिंगimport org.owasp.encoder.Encode

fun renderSafeHtml(userInput: String): String { return "<div>${Encode.forHtml(userInput)}</div>"}


4. डेटा सीरियलाइज़ेशन में कमजोरियाँ

Kotlin kotlinx.serialization या Gson/Moshi का उपयोग करता है। गलत कॉन्फ़िगरेशन संवेदनशील डेटा के रिसाव या दूरस्थ कोड निष्पादन का कारण बन सकता है।



// खतरनाक: सभी फ़ील्ड का सीरियलाइज़ेशन@Serializabledata class User(    val name: String,    val passwordHash: String // हैश का रिसाव!)

// सुरक्षित: संवेदनशील फ़ील्ड को बाहर करना@Serializabledata class SafeUser( val name: String, @Transient val passwordHash: String = "")


5. WebView का असुरक्षित उपयोग (Android)

Kotlin में Android अनुप्रयोग विकसित करते समय, अक्सर WebView का उपयोग किया जाता है। यदि JavaScript अक्षम नहीं किया जाता है या फ़िल्टरिंग कॉन्फ़िगर नहीं की जाती है, तो XSS हमला संभव है।



// खतरनाक: बिना फ़िल्टरिंग के JavaScript सक्षमwebView.settings.javaScriptEnabled = truewebView.loadUrl("file:///android_asset/index.html")

// सुरक्षित: स्थिर सामग्री के लिए JavaScript अक्षम करेंwebView.settings.javaScriptEnabled = false// या Content Security Policy का उपयोग करेंwebView.loadDataWithBaseURL(null, content, "text/html", "UTF-8", null)


6. सत्रों का गलत प्रबंधन

बिना एन्क्रिप्शन के SharedPreferences में प्रमाणीकरण टोकन संग्रहीत करना एक सामान्य गलती है। EncryptedSharedPreferences या Android Keystore का उपयोग करें।



// खतरनाक: टोकन का खुला भंडारणval prefs = context.getSharedPreferences("auth", Context.MODE_PRIVATE)prefs.edit().putString("token", token).apply()

// सुरक्षित: एन्क्रिप्टेड भंडारणval encryptedPrefs = EncryptedSharedPreferences.create( "secure_prefs", MasterKey.DEFAULT_MASTER_KEY_ALIAS, contex

ब्लॉग

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