Just gimme a second to put words in your SQL statement

Published 19 May 08 08:14 PM | Coding4Fun 

Do you have your application hooked up to a database?  Do you do stuff like

string sql = "SELECT * FROM Products"+
  "Where Id " + userInput;

Well, if I was mean (I'm not), I could do some naughty things that would be called a SQL Injection Attack.  Imagine if I did sent in "1; Drop Table Product;" as a end user.

Well, fear not, there are a few super easy ways to prevent this type of attack.

Colin Mackay has an article that explains in more detail on the SQL injection attack and multiple ways to prevent it.

A few quick ways are to use SQL parameters and to validate your data instead of blindly trusting your end user.  Here is an example of a parameterized query.

string commandText = "SELECT * FROM Customers "+
    "WHERE Country=@CountryName";
SqlCommand cmd = new SqlCommand(commandText, conn);
cmd.Parameters.Add("@CountryName",countryName);

Remember, Johnny Drop Table, can cause some trouble.

Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# rrobin said on May 20, 2008 3:52 PM:

"Imagine if I did sent in "1; Drop Table Product;" as a end user."

He'd get an exception, explaining "Table not Found". The tablename was "Products", not "Product" :)

string sql = "SELECT * FROM Products"+

 "Where Id " + userInput;

# Bydia said on May 20, 2008 8:43 PM:

Image that you did do that and that nothing would happen because you tried to delete the Product table while the actually table is Products.  Sorry, I couldn't resist the typo.

# Coding4Fun said on May 24, 2008 3:37 AM:

Yes, My bad, I typo'ed it.  There are worse commands that could be sent in.  Plus who knows, there may be a table Product also.

Leave a Comment

(required) 
(optional)
(required) 
Page view tracker