Do I have to guard against SQL injection if I used a dropdown?

Yes you need to protect against this.

Let me show you why, using Firefox’s developer console:

i've edited one of the values in the dropdown to be a drop table statement

If you don’t cleanse this data, your database will be destroyed. (This might not be a totally valid SQL statement, but I hope I’ve gotten my point across.)

Just because you’ve limited what options are available in your dropdown does not mean you’ve limited the data I can send your server.

If you tried to restrict this further using behaviour on your page, my options include disabling that behaviour, or just writing a custom HTTP request to your server which imitates this form submission anyway. There’s a tool called curl used for exactly that, and I think the command to submit this SQL injection anyway would look something like this:

curl --data "size=%27%29%3B%20DROP%20TABLE%20*%3B%20--"  http://www.example.com/profile/save

(This might not be a totally valid curl command, but again, I hope I’ve gotten my point across.)

So, I’ll reiterate:

NEVER trust user input. ALWAYS protect yourself.

Don’t assume any user input is ever safe. It’s potentially unsafe even if it arrives through some means other than a form. None of it is ever trustworthy enough to forgo protecting yourself from SQL injection.

Leave a Comment