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

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

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

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

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



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



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

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

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

string query = "SELECT * FROM Users WHERE Username = '" + username + "'";SqlCommand cmd = new SqlCommand(query, connection);

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

string query = "SELECT * FROM Users WHERE Username = @username";SqlCommand cmd = new SqlCommand(query, connection);cmd.Parameters.AddWithValue("@username", username);


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

एक हमला जिसमें हमलावर वेब पेज में दुर्भावनापूर्ण स्क्रिप्ट इंजेक्ट करता है। ASP.NET Core में आउटपुट को एन्कोड करना महत्वपूर्ण है।

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

<div>@Model.UserInput</div>

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

<div>@Html.Encode(Model.UserInput)</div>// या ASP.NET Core में @Model.UserInput का उपयोग करें यदि आप HtmlString का उपयोग नहीं कर रहे हैं

ASP.NET Core Razor डिफ़ॉल्ट रूप से आउटपुट को एन्कोड करता है, लेकिन @Html.Raw() का उपयोग करने या असत्यापित डेटा के साथ ContentResult लौटाने पर जोखिम वापस आ जाता है।



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

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

ASP.NET Core में सुरक्षा:

// ConfigureServices मेंservices.AddAntiforgery(options => options.HeaderName = "X-CSRF-TOKEN");

// कंट्रोलर में[AutoValidateAntiforgeryToken]public class AccountController : Controller{ [HttpPost] [ValidateAntiForgeryToken] public IActionResult ChangePassword(ChangePasswordModel model) { // कोड }}


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

एक खतरनाक कमजोरी, विशेष रूप से BinaryFormatter, SoapFormatter या TypeNameHandling.All के साथ Newtonsoft.Json का उपयोग करते समय।

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

var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };var obj = JsonConvert.DeserializeObject(json, settings);

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

// System.Text.Json का उपयोग करें (डिफ़ॉल्ट रूप से सुरक्षित)var obj = JsonSerializer.Deserialize<MyType>(json);// या Newtonsoft में TypeNameHandling को सीमित करेंvar settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.None };


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

इसमें कमजोर पासवर्ड, खाता लॉकआउट की कमी, असुरक्षित कुकीज़ शामिल हैं।

सिफारिशें:

  • पासवर्ड नीतियों के साथ ASP.NET Core Identity का उपयोग करें।
  • कुकी सुरक्षा कॉन्फ़िगर करें: HttpOnly, Secure, SameSite।
  • N असफल प्रयासों के बाद लॉकआउट सक्षम करें।
services.ConfigureApplicationCookie(options =>{    options.Cookie.HttpOnly = true;    options.Cookie.SecurePolicy = CookieSecurePolicy.Always;    options.Cookie.SameSite = SameSiteMode.Strict;    options.ExpireTimeSpan = TimeSpan.FromMinutes(30);    options.SlidingExpiration = true;});


6. संवेदनशील डेटा का खुलासा

पासवर्ड को सादे टेक्स्ट में संग्रहीत करना, HTTP पर डेटा संचारित करना, रहस्यों को लॉग करना।

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

// पासवर्ड हैशिंगvar passwordHasher = new PasswordHasher<User>();string hash = passwordHa
```                

ब्लॉग

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