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

Algoritmus, aby se zabránilo vkládání SQL na MSSQL Server z kódu C#?

Není potřeba žádný algoritmus – jen nepoužívejte zřetězení řetězců k vytváření příkazů SQL. Místo toho použijte kolekci SqlCommand.Parameters. To provede všechny nezbytné escapování hodnot (jako je nahrazení ' s '' ) a zajišťuje, že příkaz bude bezpečný, protože všechny testy provedl někdo jiný (tj. Microsoft).

např. volání uložené procedury:

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

Tato technika funguje také pro inline příkazy SQL, např.

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. Je ODP.NET vyžadován pro klienta Oracle 11g?

  2. nějaký limit počtu připojení k serveru SQL?

  3. převod časového razítka Epoch na server SQL (formát čitelný člověkem)

  4. Nejlepší způsob, jak zkrátit řetězec UTF8 na základě délky bajtu