C# अनुप्रयोगों की सुरक्षा: व्यवहार में शीर्ष 10 कमजोरियाँ
\n\nसुरक्षा C# और .NET पर आधुनिक अनुप्रयोगों के विकास के सबसे महत्वपूर्ण घटकों में से एक है। एक छोटी सी छूटी हुई बग भी डेटा लीक या सिस्टम के पूर्ण समझौते का कारण बन सकती है। इस लेख में, हम 10 सबसे सामान्य कमजोरियों पर चर्चा करेंगे जिनका सामना C# डेवलपर्स करते हैं, और दिखाएंगे कि व्यवहार में उनसे कैसे बचा जाए।
\n\n1. SQL-इंजेक्शन (SQL Injection)
\nसबसे पुरानी और खतरनाक कमजोरी। यह तब उत्पन्न होती है जब उपयोगकर्ता इनपुट सीधे SQL क्वेरी में डाला जाता है।
\n\nकमजोर कोड:
\nstring login = txtLogin.Text;\nstring query = "SELECT * FROM Users WHERE Login = '" + login + "'";\nSqlCommand cmd = new SqlCommand(query, connection);\n\nसुरक्षित कोड (पैरामीटरयुक्त क्वेरी):
\nstring login = txtLogin.Text;\nstring query = "SELECT * FROM Users WHERE Login = @login";\nSqlCommand cmd = new SqlCommand(query, connection);\ncmd.Parameters.AddWithValue("@login", login);\n\nअतिरिक्त सुरक्षा: ORM (Entity Framework) का उपयोग करें - यह स्वचालित रूप से क्वेरी को पैरामीटराइज़ करता है।
\n\n2. क्रॉस-साइट स्क्रिप्टिंग (XSS)
\nहमलावर उपयोगकर्ता इनपुट के माध्यम से पृष्ठ पर दुर्भावनापूर्ण JavaScript कोड इंजेक्ट करता है।
\n\nकमजोर कोड:
\nstring comment = Request.Form["comment"];\nResponse.Write("<div>" + comment + "</div>");\n\nसुरक्षित कोड (आउटपुट एन्कोडिंग):
\nstring comment = Request.Form["comment"];\nResponse.Write("<div>" + HttpUtility.HtmlEncode(comment) + "</div>");\n\nASP.NET Core में @Html.Encode() या स्वचालित एन्कोडिंग के साथ Razor सिंटैक्स का उपयोग करें।
3. क्रॉस-साइट रिक्वेस्ट फोर्जरी (CSRF)
\nएक हमला जिसमें हमलावर उपयोगकर्ता को उस साइट पर एक अवांछित कार्रवाई करने के लिए मजबूर करता है जहाँ वह प्रमाणित है।
\n\nकमजोर कोड (सुरक्षा का अभाव):
\n[HttpPost]\npublic IActionResult DeleteAccount(int userId)\n{\n // टोकन जाँच के बिना खाता हटाना\n return Ok();\n}\n\nASP.NET Core में एंटीफोर्ज टोकन के साथ सुरक्षा:
\n[HttpPost]\n[ValidateAntiForgeryToken]\npublic IActionResult DeleteAccount(int userId)\n{\n // सुरक्षित हटाना\n return Ok();\n}\n\nक्लाइंट पर, टोकन फॉर्म के छिपे हुए फ़ील्ड या हेडर के माध्यम से भेजा जाता है।
\n\n4. असुरक्षित डिसीरियलाइज़ेशन
\nअविश्वसनीय स्रोत से डेटा को डिसीरियलाइज़ करते समय, हमलावर मनमाना कोड निष्पादित कर सकता है।
\n\nकमजोर कोड (BinaryFormatter):
\nBinaryFormatter formatter = new BinaryFormatter();\nusing (FileStream fs = new FileStream("data.bin", FileMode.Open))\n{\n var obj = formatter.Deserialize(fs); // खतरनाक!\n}\n\nसुरक्षित विकल्प:
\n- \n
- प्रकार सीमा के साथ
System.Text.JsonयाNewtonsoft.Jsonका उपयोग करें। \n TypeNameHandling.Noneसक्षम करें। \n BinaryFormatter,SoapFormatterऔरLosFormatterसे बचें। \n
5. प्रमाणीकरण और सत्र प्रबंधन में कमियाँ
\nकमजोर प्रमाणीकरण, पासवर्ड को सादे पाठ में संग्रहीत करना, अनुमानित सत्र टोकन।
\n\nत्रुटियाँ:
\n- \n
- पासवर्ड को सादे पाठ में संग्रहीत करना:
User.Password = txtPassword.Text;\n - बिना सॉल्ट के हैशिंग का स्वयं का कार्यान्वयन। \n
- टोकन उत्पन्न करने के लिए
Guid.NewGuid()का उपयोग करना - बहुत अनुमानित। \n
सही दृष्टिकोण:
\n- \n
ASP.NET Core Identityका उपयोग करें - एक अंतर्निहित समाधान। \n BCrypt.Netया