Just gimme a second to put words in your SQL statement

Sign in to queue


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);

Remember, Johnny Drop Table, can cause some trouble.



The Discussion

  • User profile image

    "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" Smiley

    string sql = "SELECT * FROM Products"+

     "Where Id " + userInput;

  • User profile image

    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.

  • User profile image

    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.

Add Your 2 Cents