David, Actually, to nitpick your comment a bit, stored procedures usually have typed input variables: create procedure foo ( a int, b varchar(20) ) as ... At least in MSSQL, you'd have to do something bad like use sp_executesql or some other function that will re-form a complete sql query and pass that to the interpreter. As long as you do more sensible stuff like: insert into table (name, age) values (@b, @a) you should be fine. Michael Scovetta Computer Associates Senior Application Developer -----Original Message----- From: David Litchfield [mailto:davidl@xxxxxxxxxxxxxxx] Sent: Wednesday, January 05, 2005 2:20 PM To: 'Steve Friedl'; bugtraq@xxxxxxxxxxxxxxxxx Subject: RE: Paper: SQL Injection Attacks by Example Hi Steve, Nice paper. However, one small nitpick - under "Mitigations" you list using stored procedures if the database supports them. I've seen other people suggest this as a defensive strategy as well. Using stored procedures will *not* protect you from SQL injection attacks. Firstly, they can be injected into just as easily as a select statement. Secondly, the procedure itself can be vulnerable to SQL injection. I have seen for example, procs that use double quotes internally and single quotes on input. That said, stored procedures are generally faster so it's better to use them for performance reasons, anyway. Cheers, David Litchfield