| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | "Bogdan Tomchuk" <tbp-dsi(at)poly(dot)polytechnique(dot)fr> |
| Cc: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: SQL Injection possible on custom functions |
| Date: | 2005-02-14 16:45:06 |
| Message-ID: | 29269.1108399506@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
"Bogdan Tomchuk" <tbp-dsi(at)poly(dot)polytechnique(dot)fr> writes:
> My question is: if we imagine that input of UpdateAccount has no =
> filtration or this filtration incorrect does exist any way to modify =
> other then authorized parameters of Accounts table or records of other =
> user? Is there any injection technique possible? Should I still do =
> something like quote_literal() systematically on each parameters and =
> reverse conversation each time? Or even replace UPDATE.. by EXECUTE =
No. The code as you wrote it is perfectly secure --- plpgsql variables
are placeholders, their values aren't injected literally into the SQL
command. If you went over to using EXECUTE then you *would* need
quote_literal to be safe, because then you're synthesizing the complete
SQL command as a string.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | mike | 2005-02-14 18:41:59 | DBI and placeholders question |
| Previous Message | Bruce Momjian | 2005-02-14 16:25:10 | Re: [GENERAL] WARNING: could not remove database directory |