3 ms·
Your driver should be able to handle parameterized queries for you. query('SELECT * FROM users WHERE id = ANY ($1::int[])', [1, 2, 3]); query('SELECT *
by danneu 12y ago
Your driver should be able to handle parameterized queries for you.
query('SELECT * FROM users WHERE id = ANY ($1::int[])', [1, 2, 3]);
query('SELECT * FROM users WHERE lower(uname) = lower($1)', 'foo');
Where's the injection vulnerability?
- bayesianhorse 12y agoSo I may not be an SQL expert, but why would it be difficult to produce an injection string for $1? Of course, if you supply it "guaranteed" integers, then you can't. Injections normally happen with user inputs, not constants.
- WorldWideWayne 12y agoBecause SQL query compilers generally don't execute the parameters. They do not just concatenate the given parameter strings into the query template and then run that. Instead, parameters are always treated as parameters, the query template is compiled and the parameters are passed into that compiled representation of the query where they are simply regarded as variables, not eval'd.