C# अनुप्रयोगों की शीर्ष 10 कमजोरियाँ और उनसे कैसे बचें

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

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

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

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



C# और .NET प्लेटफॉर्म पर विकास एंटरप्राइज़ और वेब अनुप्रयोग बनाने के लिए एक शक्तिशाली उपकरण है। हालांकि, सबसे विश्वसनीय कोड में भी ऐसी खामियाँ हो सकती हैं जो डेटा लीक, प्रतिष्ठा की हानि और वित्तीय नुकसान का कारण बनती हैं। इस लेख में, हम OWASP Top 10 पर आधारित C# अनुप्रयोगों की 10 सबसे सामान्य कमजोरियों को व्यावहारिक उदाहरणों और सुरक्षा के तरीकों के साथ समझेंगे।



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



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



असुरक्षित कोड:

string userName = Request.QueryString["name"];string query = "SELECT * FROM Users WHERE Name = '" + userName + "'";SqlCommand cmd = new SqlCommand(query, connection);


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

string userName = Request.QueryString["name"];string query = "SELECT * FROM Users WHERE Name = @name";SqlCommand cmd = new SqlCommand(query, connection);cmd.Parameters.AddWithValue("@name", userName);


सिफारिश: हमेशा पैरामीटरयुक्त क्वेरी या Entity Framework का उपयोग करें, जो स्वचालित रूप से इनपुट को एस्केप करता है।



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



XSS हमले हमलावर को वेब पेज में दुर्भावनापूर्ण स्क्रिप्ट इंजेक्ट करने की अनुमति देते हैं। C# में, यह अक्सर @Html.Raw() के माध्यम से अपरीक्षित डेटा आउटपुट करने पर होता है।



असुरक्षित कोड:

@Html.Raw(Model.Comment)


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

@Html.Encode(Model.Comment)


सिफारिश: Razor सिंटैक्स @Model.Comment का उपयोग करें (यह स्वचालित रूप से HTML को एन्कोड करता है) और बिना जाँच के @Html.Raw() का कभी उपयोग न करें।



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



CSRF एक प्रमाणित उपयोगकर्ता को साइट पर अवांछित कार्रवाई (जैसे पैसे ट्रांसफर) करने के लिए मजबूर करता है। ASP.NET Core में सुरक्षा अंतर्निहित है, लेकिन इसे सही ढंग से सक्षम करने की आवश्यकता है।



असुरक्षित कोड (एंटीफोर्जरी टोकन की कमी):

<form method="post" action="/Account/Delete">    <button type="submit">खाता हटाएं</button></form>


सुरक्षित कोड (AntiForgeryToken के साथ):

<form method="post" action="/Account/Delete">    @Html.AntiForgeryToken()    <button type="submit">खाता हटाएं</button></form>


सिफारिश: अपने POST विधियों में [ValidateAntiForgeryToken] विशेषता जोड़ें और फॉर्म में @Html.AntiForgeryToken() का उपयोग करें।



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



पासवर्ड को सादे टेक्स्ट में या कमजोर हैश (MD5, SHA1) का उपयोग करके संग्रहीत करना एक गंभीर गलती है।



असुरक्षित कोड:

string passwordHash = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(password));


सुरक्षित कोड (bcrypt/Argon2 का उपयोग):

using BCrypt.Net;string passwordHash = BCrypt.HashPassword(password, workFactor: 12);


सिफारिश: BCrypt.Net या Microsoft.AspNetCore.Identity लाइब्रेरी का उपयोग करें, जो स्वचालित रूप से सॉल्ट उत्पन्न करती हैं और आधुनिक एल्गोरिदम का उपयोग करती हैं।



5. अपवादों में गोपनीय डेटा का खुलासा



उपयोगकर्ता को पूर्ण एरर स्टैक आउटपुट करने से एप्लिकेशन संरचना, कनेक्शन स्ट्रिंग और फ़ाइल पथ का खुलासा हो सकता है।



असुरक्षित कोड (production में):

catch (Exception ex){    return Content(ex.ToString());}


सुरक्षित कोड:

catch (Exception ex){    _logger.LogError(ex, "अनुरोध प्रसंस्करण में त्रुटि");    return StatusCode(500, "आंतरिक सर्वर त्रुटि");}


सिफ

ब्लॉग

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