格式化sql查询以避免sql注入

siotufzp  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(430)

这个问题在这里已经有答案了

节点postgres:如何执行“where col in()”查询(7个答案)
10个月前关门了。
我必须在node.js应用程序中使用下面的sql查询。

SELECT * FROM my_table
WHERE my_column IN ['name1','name2']

数组['name1','name2']由用户输入。有时可能包含两个以上的名字。如何使用pg format包格式化此查询以避免sql注入?

3z6pesqy

3z6pesqy1#

不是吗 IN 子句参数应该用括号 Package 吗?不管怎样,这里有一个使用pg格式格式化的例子,

var format = require('pg-format');
var sql = format("SELECT * FROM my_table WHERE my_column IN (%L, %L)", 'Alice', 'Bob'); // name1, name2
console.log(sql);

编辑1:使用数组的动态名称,

var format = require('pg-format');
var names = ['Alice', 'Bob', 'Charlie'];
var inCaluseStr = '(' + Array(names.length).fill('%L').join(',') + ')';
var sql = format.withArray("SELECT * FROM my_table WHERE my_column IN " + inCaluseStr, names);
console.log(sql);

我希望这有帮助。

相关问题