Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O que está passando parâmetros para SQL e por que preciso disso?


A passagem de parâmetros para o SQL evita que você tenha que criar uma string SQL dinâmica.

Construir instruções SQL dinâmicas é um ENORME risco de segurança porque as pessoas podem injetar seu próprio código SQL em seu aplicativo, possivelmente executando comandos indesejáveis ​​em seus dados.

Existem alguns bons exemplos de possíveis ataques de injeção de SQL em:

Ataques de injeção de SQL por exemplo

Existem duas maneiras de passar parâmetros para instruções SQL. Uma é usar Stored Procedures como você mencionou. A outra é usar consultas parametrizadas (que na verdade é o que eu prefiro).

Uma consulta parametrizada é realmente muito fácil em .NET:
using(SqlConnection conn = new SqlConnection(connString))
{
    SqlCommand command = 
        new SqlCommand("SELECT * FROM Users WHERE Username = @Username", conn);

    command.Parameters.Add(new SqlParameter("@Username", "Justin Niessner"));

    SqlDataAdapter adapter = new SqlDataAdapter(command);
    DataTable dt = new DataTable();

    adapter.Fill(dt);
}

Nesse exemplo, o parâmetro era @Username e usamos os Parameters coleção do SqlCommand objeto para passar o valor.