sql >> Database >  >> RDS >> Sqlserver

Wat geeft parameters door aan SQL en waarom heb ik deze nodig?

Door parameters aan SQL door te geven, hoeft u geen dynamische SQL-string te bouwen.

Het bouwen van dynamische SQL-instructies is een ENORM beveiligingsrisico omdat mensen hun eigen SQL-code in uw toepassing kunnen injecteren en mogelijk ongewenste commando's tegen uw gegevens kunnen uitvoeren.

Er zijn enkele goede voorbeelden van mogelijke SQL-injectie-aanvallen op:

Voorbeeld SQL-injectieaanvallen

Er zijn twee manieren om parameters door te geven aan SQL-instructies. Een daarvan is om opgeslagen procedures te gebruiken zoals u al zei. De andere is het gebruik van geparametriseerde queries (waar ik eigenlijk de voorkeur aan geef).

Een geparametriseerde query is eigenlijk vrij eenvoudig 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 dat voorbeeld was de parameter @Username en we gebruikten de Parameters verzameling van de SqlCommand object om de waarde door te geven.



  1. DBCC CLONEDATABASE gebruiken om een ​​schema en alleen statistieken te genereren van een gebruikersdatabase in SQL Server 2014 SP2

  2. Hoe u uw MySQL- en MariaDB-database kunt beschermen tegen cyberaanvallen op een openbaar netwerk

  3. Mogelijk om een ​​MySQL-vreemde sleutel te doen naar een van de twee mogelijke tabellen?

  4. Groeperen met een Case Statement