Цель: предотвратить внедрение SQL.
Я хочу передать имя столбца и имя таблицы динамически из запроса на выборку.
Рассмотрим следующий метод:
public bool PassColumnTableDynamic(string columnName, string tableName)
{
string commandText = string.Format(select {0} from {1}, columnName, tableName);
try
{
using (var command = new SqlCommand(commandText, _connection))
{
command.ExecuteScalar();
}
}
catch (Exception ex)
{
throw new Exception("error",ex);
}
return true;
}
CommandText уязвим для SQL внедрения. Как я могу предотвратить это?
У меня есть решение для создания хранимой процедуры и передачи ее в качестве параметра из этого метода. Но я не хочу создавать хранимую процедуру.
Есть ли в коде C# что-нибудь, что можно исправить?