sql >> Database >  >> RDS >> Sqlserver

Algoritme om SQL-injectie op MSSQL Server te vermijden vanuit C#-code?

Er is geen algoritme nodig - gebruik gewoon geen samenvoeging van tekenreeksen om SQL-instructies te maken. Gebruik in plaats daarvan de verzameling SqlCommand.Parameters. Dit doet alle noodzakelijke escapes van waarden (zoals het vervangen van ' met '' ) en zorgt ervoor dat de opdracht veilig is omdat iemand anders (bijv. Microsoft) alle tests heeft gedaan.

bijv. een opgeslagen procedure aanroepen:

using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand("MySprocName", connection))
{
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.AddWithValue("@Param1", param1Value);
    return command.ExecuteReader();
}

Deze techniek werkt ook voor inline SQL-instructies, bijv.

var sql = "SELECT * FROM MyTable WHERE MyColumn = @Param1";
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.AddWithValue("@Param1", param1Value);
    return command.ExecuteReader();
}


  1. Laravel instellen op een Mac php artisan migreerfout:geen dergelijk bestand of map

  2. Wat doet pg_escape_string precies?

  3. Grote transacties afhandelen met streamingreplicatie en MariaDB 10.4

  4. MySQL GRADEN() Functie – Converteren van radialen naar graden