Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Che cos'è il passaggio di parametri a SQL e perché ne ho bisogno?

Il passaggio di parametri a SQL ti evita di dover creare una stringa SQL dinamica.

La creazione di istruzioni SQL dinamiche è un ENORME rischio per la sicurezza perché le persone possono iniettare il proprio codice SQL nella tua applicazione, possibilmente eseguendo comandi indesiderati contro i tuoi dati.

Ci sono alcuni buoni esempi di possibili attacchi SQL injection su:

Attacchi SQL injection per esempio

Esistono due modi per passare i parametri alle istruzioni SQL. Uno è usare le stored procedure come hai menzionato. L'altro consiste nell'usare query parametrizzate (che in realtà è ciò che preferisco).

Una query parametrizzata è in realtà abbastanza semplice in .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);
}

In quell'esempio, il parametro era @Username e abbiamo usato i Parameters raccolta di SqlCommand oggetto per passare il valore.