sql >> Databáze >  >> RDS >> Sqlserver

Co je předávání parametrů do SQL a proč to potřebuji?

Předávání parametrů SQL vám ušetří nutnost vytvářet dynamický řetězec SQL.

Vytváření dynamických příkazů SQL představuje OBROVSKÉ bezpečnostní riziko, protože lidé mohou do vaší aplikace vložit svůj vlastní kód SQL a případně provést nežádoucí příkazy proti vašim datům.

Některé dobré příklady možných útoků SQL Injection jsou na adrese:

Příklad útoků SQL Injection

Existují dva způsoby předávání parametrů příkazům SQL. Jedním z nich je použití uložených procedur, jak jste zmínil. Druhým je použití parametrizovaných dotazů (což je vlastně to, co preferuji).

Parametrizovaný dotaz je v .NET ve skutečnosti docela snadný:

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);
}

V tomto příkladu byl parametr @Username a použili jsme Parameters kolekce SqlCommand objekt předat hodnotu.



  1. Deklarativní SQLAlchemy:definování spouštěčů a indexů (Postgres 9)

  2. SQLite AUTOINCREMENT

  3. Jak využít nové funkce dělení v PostgreSQL 11

  4. Jak získat počet každé odlišné hodnoty ve sloupci?