I en SQL-Injektion lägger användaren till SQL-kommandon som skadar databasen genom att ändra, lägga till eller ta bort information. För att ställa frågor mot databasen i .NET använder du ett ICommand-objekt, t.ex. SQLCommand om databasen är en MSSQL. I frågan lägger du nu till en parameter:
var command = new SqlCommand("SELECT * FROM Log WHERE LogDate = @sDate");
Till kommandoobjektet skall du nu lägga in parameterobjekt för varje parameter som du lagt in. I det här exemplet har vi en parameter och den är namngiven @sDate . Vi anger också vilken datatyp som parametern är, vilket i det här fallet skall hindra användaren från att lägga in något annat än ett datum:
var dateParameter = command.CreateParameter();
dateParameter.ParameterName ="sDate";
dateParameter.SqlDbType = SqlDbType.Date;
dateParameter.Value = dateStringFromUser;
command.Parameters.Add(dateParameter);
När du sedan anropar någon av Execute-funktionerna kommer ett FormatException att kastas om användarens datumvärde inte är ett datum t.ex. om det skulle vara ett kommando för att ta bort hela databasen.
Är nyckelordet var obekant kan du läsa mera om det här:
http://msdn.microsoft.com/en-us/library/bb383973.aspx
Cecilia Wirén, kursledare på Addskills