sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är det som skickar parametrar till SQL och varför behöver jag det?

Genom att skicka parametrar till SQL slipper du bygga en dynamisk SQL-sträng.

Att bygga dynamiska SQL-satser är en ENORM säkerhetsrisk eftersom människor kan injicera sin egen SQL-kod i din applikation och eventuellt utföra oönskade kommandon mot dina data.

Det finns några bra exempel på möjliga SQL Injection-attacker på:

SQL Injection Attacks by Example

Det finns två sätt att skicka parametrar till SQL-satser. En är att använda lagrade procedurer som du nämnde. Den andra är att använda parametriserade frågor (vilket faktiskt är vad jag föredrar).

En parameteriserad fråga är faktiskt ganska enkel i .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);
}

I det exemplet var parametern @Username och vi använde Parameters samling av SqlCommand objekt att skicka in värdet.



  1. Har Oracle ett filtrerat indexkoncept?

  2. Oracle High Availability-koncept i PostgreSQL

  3. Vilken effekt kan olika marköralternativ ha?

  4. SQL Server JDBC-fel på Java 8:Drivrutinen kunde inte upprätta en säker anslutning till SQL Server genom att använda Secure Sockets Layer (SSL) kryptering