SQL에서 테이블 이름을 매개변수화합니까?
질문:
테이블을 전달하는 것이 가능합니까? .NET/SQL에서 매개변수로 이름을 지정하시겠습니까? 최종 목표는 보안을 손상시키지 않으면서 깔끔함을 높이고 지저분한 코드를 방지하는 것입니다.
답변:
테이블 이름을 직접 매개변수화하는 것은 지원되지 않습니다. 그러나 sp_ExecuteSQL을 사용하여 이를 간접적으로 달성할 수 있습니다.
SqlConnection conn = new SqlConnection("Your database connection string"); DataTable dt = new DataTable(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_ExecuteSQL"; cmd.Parameters.AddWithValue("@stmt","SELECT * FROM table"); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { da.Fill(dt); } }
또는 C#에서 (매개변수화된) SQL 문을 구성하고 테이블 이름을 추가한 후 명령으로 실행할 수도 있습니다.
var name = ...; //Determine table name dynamically here var sql = $"SELECT * FROM {"table"}"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.Add("", ...); var result = cmd.ExecuteReader(); ... }
잠재적인 보안 취약점을 방지하려면 테이블 이름을 화이트리스트에 추가하는 것을 잊지 마세요.
위 내용은 깨끗하고 안전한 코드를 위해 .NET/SQL에서 테이블 이름을 매개변수화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!