sql >> Database teknologi >  >> RDS >> Sqlserver

Algoritme til at undgå SQL-injektion på MSSQL Server fra C#-kode?

Der er ingen algoritme nødvendig - brug bare ikke strengsammenkædning til at bygge SQL-sætninger. Brug SqlCommand.Parameters-samlingen i stedet. Dette gør al den nødvendige escape af værdier (såsom at erstatte '). med '' ) og sikrer, at kommandoen er sikker, fordi en anden (dvs. Microsoft) har udført alle testene.

for eksempel. kalder en lagret procedure:

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

Denne teknik virker også til inline SQL-sætninger, f.eks.

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. Sådan ÆNDRES Tabelværdiparameteren

  2. Hvordan indstilles primær nøgle til automatisk stigning i PostgreSQL?

  3. Hvordan taler Access med ODBC-datakilder? Del 5

  4. JSON_PRETTY() – Formater JSON-dokumenter for lettere læsbarhed i MySQL