Man bör använda parametriserade frågor som använder platshållare i sql-satserna istället för att ta emot data direkt från en användare och konkatenera på den på sql-strängen efter att ha försökt substituera bort potentiellt farliga strängar.
Här är ett citat från en chat med Michael Pizzo (Microsoft architect in the WebData team and one of the designers of ADO.NET version 1.0):
Citat:
SqlInjection occurs when an application appends user-input to a query string sent to the server. Rather than concatenate unvalidated strings from the user, you should make it a practice to use parameterized queries. For example; instead of using: "Select * from customers where custid = " & customerIDuse "Select * from customers where custid = @custID"and call cmd.Parameters.AddWithValue("@custID",customerID)
|
Källa:
http://msdn.microsoft.com/chats/tran...io_060104.aspx
Här är ett kodexempel med placeholders för dig som använder klassisk (d.v.s. "icke-.NET") ADO/ASP/COM:
http://msdn.microsoft.com/library/de...vecommandx.asp
/ Tomas