प्रौद्योगिकी साझेदारी

C# विधिः सत्यापयितुं यत् इनपुट् स्टेट्मेण्ट् मध्ये SQL इन्ट्रूजनः अस्ति वा इति

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

उपयोक्तृ-प्रविष्टेषु आँकडासु C# WinForms मध्ये SQL-इञ्जेक्शन-आक्रमण-कथनानि सन्ति वा इति सत्यापयितुं, भवान् SQL-इञ्जेक्शन्-परिचयार्थं निवारयितुं च विविध-विधिनाम् उपयोगं कर्तुं शक्नोति अत्र कतिचन सामान्यविधयः सन्ति- १.

1. पैरामीटरीकृतप्रश्नानां उपयोगं कुर्वन्तु

पैरामीटराइज्ड् क्वेरीस् SQL इन्जेक्शन् इत्यस्य निवारणार्थं सर्वोत्तमः अभ्यासः अस्ति यत् SQL क्वेरी इत्यत्र प्रत्यक्षतया SQL स्ट्रिंग् मध्ये एम्बेड् कर्तुं न अपितु पैरामीटर् रूपेण उपयोक्तृनिवेशं पारयति एतेन सुनिश्चितं भवति यत् उपयोक्तृनिवेशस्य व्याख्या SQL कोडरूपेण न भवति ।

  1. using System.Data.SqlClient;
  2. public void ExecuteQuery(string userInput)
  3. {
  4. string connectionString = "数据库连接字符串";
  5. string query = "SELECT * FROM Users WHERE Username = @Username";
  6. using (SqlConnection connection = new SqlConnection(connectionString))
  7. using (SqlCommand command = new SqlCommand(query, connection))
  8. {
  9. command.Parameters.AddWithValue("@Username", userInput);
  10. connection.Open();
  11. SqlDataReader reader = command.ExecuteReader();
  12. while (reader.Read())
  13. {
  14. // Process the data
  15. }
  16. }
  17. }

2. खतरनाकवर्णानां कृते उपयोक्तृनिवेशं पश्यन्तु

सामान्य SQL इन्जेक्शन वर्णाः कीवर्ड च यथा एकल उद्धरणम् ('),द्विगुणित उद्धरण ( ."), अर्धविराम (;), टिप्पणी प्रतीक (--), तथा च सामान्याः SQL कीवर्डाः यथा SELECTINSERTDELETEUPDATEDROP इत्यादि)।

  1. public bool IsSqlInjection(string input)
  2. {
  3. string[] sqlCheckList = { "SELECT", "INSERT", "UPDATE", "DELETE", "DROP", "--", ";", "'" };
  4. foreach (string item in sqlCheckList)
  5. {
  6. if (input.IndexOf(item, StringComparison.OrdinalIgnoreCase) >= 0)
  7. {
  8. return true;
  9. }
  10. }
  11. return false;
  12. }
  13. string userInput = txtUserInput.Text;
  14. if (IsSqlInjection(userInput))
  15. {
  16. MessageBox.Show("输入包含不安全的字符,请重新输入。");
  17. }
  18. else
  19. {
  20. // 继续处理用户输入
  21. ExecuteQuery(userInput);
  22. }

3. ORM framework इत्यस्य उपयोगं कुर्वन्तु

Entity Framework इत्यादिस्य ORM (Object Relational Mapping)-रूपरेखायाः उपयोगेन SQL-इञ्जेक्शनस्य जोखिमं बहुधा न्यूनीकर्तुं शक्यते यतोहि ORM-रूपरेखा स्वयमेव पैरामीटराइज्ड्-प्रश्नानि सम्पादयति

  1. using (var context = new YourDbContext())
  2. {
  3. var user = context.Users.SingleOrDefault(u => u.Username == userInput);
  4. if (user != null)
  5. {
  6. // Process the user data
  7. }
  8. }