Technology sharing

C# methodum cognoscere an initus constitutionis SQL intrusionem contineat

2024-07-12

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

Ut cognoscas an notitia usor-initata contineat SQL iniectio impetus enuntiatorum in C# WinForms, variis modis uti potes ad detegendam iniectionem et SQL prohibendam. Hic paucae rationes communes sunt;

1. usus parameterized queries

Quaestiones parametrisatae sunt optima praxi ad impediendam iniectio SQL utentis initus ut parametri ad interrogationem SQL transeundo, potius quam illam directe in chorda SQL embedendam. Hoc efficit ut user initus non interpretatur SQL code.

  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. Reprehendo user initus pro periculo characters

Commune SQL iniectio indolem et keywords ut singula quotes (') Duplex quotes"), semicolon (;) , symbolum commentarium--) Itemque commune SQL keywords ut * SELECTINSERTDELETEUPDATEDROP etc).

  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. usus ORM compage

Utens ORM (Objectum relationis Mapping) compages ut Entity Framework periculum valde minuere potest injectionis SQL quia compages ORM ipso facto quaestionibus parametris tractat.

  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. }