informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Untuk memverifikasi apakah data yang dimasukkan pengguna berisi pernyataan serangan injeksi SQL di C# WinForms, Anda dapat menggunakan berbagai metode untuk mendeteksi dan mencegah injeksi SQL. Berikut beberapa metode umum:
Kueri berparameter adalah praktik terbaik untuk mencegah injeksi SQL dengan meneruskan input pengguna ke kueri SQL sebagai parameter, bukan langsung menyematkannya ke dalam string SQL. Hal ini memastikan bahwa input pengguna tidak ditafsirkan sebagai kode 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
- }
- }
- }
Karakter injeksi SQL umum dan kata kunci seperti tanda kutip tunggal ('
), tanda kutip ganda ("
), titik koma (;
), simbol komentar (--
), serta kata kunci SQL umum seperti SELECT
、INSERT
、DELETE
、UPDATE
、DROP
dll).
- 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);
- }
Menggunakan kerangka ORM (Pemetaan Relasional Objek) seperti Entity Framework dapat sangat mengurangi risiko injeksi SQL karena kerangka ORM secara otomatis menangani kueri berparameter.
- using (var context = new YourDbContext())
- {
- var user = context.Users.SingleOrDefault(u => u.Username == userInput);
- if (user != null)
- {
- // Process the user data
- }
- }