>

사용자 입력의 이름을 딴 데이터베이스를 만들기 위해 C # 함수를 실행하고 있습니다. SQL Injection을 방지하고 싶습니다. 일반적으로 매개 변수를 사용하지만 매개 변수는 데이터 조작이 아닌 데이터 조작에만 작동합니다. 코드는 다음과 같습니다 :

using (var conn = new MySqlConnection(connStr))
{
    conn.Open();
    var comm = conn.CreateCommand();
    comm.CommandText = "CREATE DATABASE IF NOT EXISTS @name";
    comm.Parameters.AddWithValue("@name", id);
    comm.ExecuteNonQuery();
}

데이터베이스를 생성하는 데 매개 변수가 작동하지 않기 때문에 주입을 방지하기 위해 입력을 살균하는 가장 좋은 방법은 무엇입니까?

감사합니다!

  • 답변 # 1

    MySqlHelper.EscapeString("") 사용  매개 변수를 사용하지 않거나 사용할 수없는 경우

    매개 변수를 정의하면 mySQL이 내부를 사용합니다.

    명령은 다음과 같아야합니다.

    comm.CommandText = "CREATE DATABASE IF NOT EXISTS " + MySqlHelper.EscapeString(id);
    
    

  • 이전 c# - MS Fakes 객체의 반환 값을 설정하는 방법은 무엇입니까?
  • 다음 php - 카운트 다운 mysql