Thread: pg_query_params and SQL injection

pg_query_params and SQL injection

From
Kevin Golding
Date:
Hi all
I am just doing some playing around with PHP to learn how to avoid SQL injection attacks.
It has been mentioned in a few places that pg_query_params is supposed to protect from sql injection without needing to
messaround escaping quotes and things. 

However, I was still able to get it to drop a table by feeding in this input "1; drop table results" to the following
statement:
$r = pg_query_params($p, 'select * from results where res_id = $1', array($input));

Everyone keeps repeating the same "pg_query_params is safe from SQL injection", but surely someone else must have
actuallytried it? Where am I going wrong? 

I am using Postgresql 8.3 for OS X on 10.5.2, and MAMP which has PHP Version 5.2.5.

Thanks
Kevin




Re: pg_query_params and SQL injection

From
ljb
Date:
tearinghairout@yahoo.com wrote:
> Hi all
> I am just doing some playing around with PHP to learn how to avoid SQL injection attacks.
> It has been mentioned in a few places that pg_query_params is supposed to protect from sql injection without needing
tomess around escaping quotes and things. 
>
> However, I was still able to get it to drop a table by feeding in this input "1; drop table results" to the following
statement:
> $r = pg_query_params($p, 'select * from results where res_id = $1', array($input));
>
> Everyone keeps repeating the same "pg_query_params is safe from SQL injection", but surely someone else must have
actuallytried it? Where am I going wrong? 
>
> I am using Postgresql 8.3 for OS X on 10.5.2, and MAMP which has PHP Version 5.2.5.

I can't duplicate it and don't think it is possible. I get this error:
PHP Warning:  pg_query_params()
Query failed: ERROR:  invalid input syntax for integer: "1; drop table results"

Take another look or post more of the code you tried.