C# अनुप्रयोगों की सुरक्षा: व्यवहार में शीर्ष 10 कमजोरियाँ

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

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

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

C# अनुप्रयोगों की सुरक्षा: व्यवहार में शीर्ष 10 कमजोरियाँ

\n\n

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

\n\n

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

\n

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

\n\n

कमजोर कोड:

\n
string login = txtLogin.Text;\nstring query = "SELECT * FROM Users WHERE Login = '" + login + "'";\nSqlCommand cmd = new SqlCommand(query, connection);
\n\n

सुरक्षित कोड (पैरामीटरयुक्त क्वेरी):

\n
string 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\n

2. क्रॉस-साइट स्क्रिप्टिंग (XSS)

\n

हमलावर उपयोगकर्ता इनपुट के माध्यम से पृष्ठ पर दुर्भावनापूर्ण JavaScript कोड इंजेक्ट करता है।

\n\n

कमजोर कोड:

\n
string comment = Request.Form["comment"];\nResponse.Write("<div>" + comment + "</div>");
\n\n

सुरक्षित कोड (आउटपुट एन्कोडिंग):

\n
string comment = Request.Form["comment"];\nResponse.Write("<div>" + HttpUtility.HtmlEncode(comment) + "</div>");
\n\n

ASP.NET Core में @Html.Encode() या स्वचालित एन्कोडिंग के साथ Razor सिंटैक्स का उपयोग करें।

\n\n

3. क्रॉस-साइट रिक्वेस्ट फोर्जरी (CSRF)

\n

एक हमला जिसमें हमलावर उपयोगकर्ता को उस साइट पर एक अवांछित कार्रवाई करने के लिए मजबूर करता है जहाँ वह प्रमाणित है।

\n\n

कमजोर कोड (सुरक्षा का अभाव):

\n
[HttpPost]\npublic IActionResult DeleteAccount(int userId)\n{\n    // टोकन जाँच के बिना खाता हटाना\n    return Ok();\n}
\n\n

ASP.NET Core में एंटीफोर्ज टोकन के साथ सुरक्षा:

\n
[HttpPost]\n[ValidateAntiForgeryToken]\npublic IActionResult DeleteAccount(int userId)\n{\n    // सुरक्षित हटाना\n    return Ok();\n}
\n\n

क्लाइंट पर, टोकन फॉर्म के छिपे हुए फ़ील्ड या हेडर के माध्यम से भेजा जाता है।

\n\n

4. असुरक्षित डिसीरियलाइज़ेशन

\n

अविश्वसनीय स्रोत से डेटा को डिसीरियलाइज़ करते समय, हमलावर मनमाना कोड निष्पादित कर सकता है।

\n\n

कमजोर कोड (BinaryFormatter):

\n
BinaryFormatter 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
\n\n

5. प्रमाणीकरण और सत्र प्रबंधन में कमियाँ

\n

कमजोर प्रमाणीकरण, पासवर्ड को सादे पाठ में संग्रहीत करना, अनुमानित सत्र टोकन।

\n\n

त्रुटियाँ:

\n
    \n
  • पासवर्ड को सादे पाठ में संग्रहीत करना: User.Password = txtPassword.Text;
  • \n
  • बिना सॉल्ट के हैशिंग का स्वयं का कार्यान्वयन।
  • \n
  • टोकन उत्पन्न करने के लिए Guid.NewGuid() का उपयोग करना - बहुत अनुमानित।
  • \n
\n\n

सही दृष्टिकोण:

\n
    \n
  • ASP.NET Core Identity का उपयोग करें - एक अंतर्निहित समाधान।
  • \n
  • BCrypt.Net या

ब्लॉग

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