2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
उपयोक्तृ-प्रविष्टेषु आँकडासु C# WinForms मध्ये SQL-इञ्जेक्शन-आक्रमण-कथनानि सन्ति वा इति सत्यापयितुं, भवान् SQL-इञ्जेक्शन्-परिचयार्थं निवारयितुं च विविध-विधिनाम् उपयोगं कर्तुं शक्नोति अत्र कतिचन सामान्यविधयः सन्ति- १.
पैरामीटराइज्ड् क्वेरीस् SQL इन्जेक्शन् इत्यस्य निवारणार्थं सर्वोत्तमः अभ्यासः अस्ति यत् SQL क्वेरी इत्यत्र प्रत्यक्षतया SQL स्ट्रिंग् मध्ये एम्बेड् कर्तुं न अपितु पैरामीटर् रूपेण उपयोक्तृनिवेशं पारयति एतेन सुनिश्चितं भवति यत् उपयोक्तृनिवेशस्य व्याख्या SQL कोडरूपेण न भवति ।
- using System.Data.SqlClient;
-
- public void ExecuteQuery(string userInput)
- {
- string connectionString = "数据库连接字符串";
- string query = "SELECT * FROM Users WHERE Username = @Username";
-
- using (SqlConnection connection = new SqlConnection(connectionString))
- using (SqlCommand command = new SqlCommand(query, connection))
- {
- command.Parameters.AddWithValue("@Username", userInput);
-
- connection.Open();
- SqlDataReader reader = command.ExecuteReader();
- while (reader.Read())
- {
- // Process the data
- }
- }
- }
सामान्य SQL इन्जेक्शन वर्णाः कीवर्ड च यथा एकल उद्धरणम् ('
),द्विगुणित उद्धरण ( ."
), अर्धविराम (;
), टिप्पणी प्रतीक (--
), तथा च सामान्याः SQL कीवर्डाः यथा SELECT
、INSERT
、DELETE
、UPDATE
、DROP
इत्यादि)।
- public bool IsSqlInjection(string input)
- {
- string[] sqlCheckList = { "SELECT", "INSERT", "UPDATE", "DELETE", "DROP", "--", ";", "'" };
- foreach (string item in sqlCheckList)
- {
- if (input.IndexOf(item, StringComparison.OrdinalIgnoreCase) >= 0)
- {
- return true;
- }
- }
- return false;
- }
-
-
- string userInput = txtUserInput.Text;
- if (IsSqlInjection(userInput))
- {
- MessageBox.Show("输入包含不安全的字符,请重新输入。");
- }
- else
- {
- // 继续处理用户输入
- ExecuteQuery(userInput);
- }
Entity Framework इत्यादिस्य ORM (Object Relational Mapping)-रूपरेखायाः उपयोगेन SQL-इञ्जेक्शनस्य जोखिमं बहुधा न्यूनीकर्तुं शक्यते यतोहि ORM-रूपरेखा स्वयमेव पैरामीटराइज्ड्-प्रश्नानि सम्पादयति
- using (var context = new YourDbContext())
- {
- var user = context.Users.SingleOrDefault(u => u.Username == userInput);
- if (user != null)
- {
- // Process the user data
- }
- }