使用node-postgres的INSERT关联查询写法是否能防范SQL注入?
你的写法完全能防范SQL注入
你的这段代码用了PostgreSQL客户端标准的参数化查询方式,完全可以防范SQL注入,原因如下:
- 所有外部传入的变量(
var1、var2、var6ProvId等)都通过values数组传递,SQL文本里只用$1-$6这类占位符指代,不会把变量内容直接拼进SQL语句里。数据库会自动把这些参数当作纯数据处理,不会解析成可执行的SQL代码。 - 从
provider表获取的prov_first_name、prov_email是固定的表字段名,不是外部可控的输入,这部分也不存在注入风险。
只要你一直坚持这种参数化查询的写法,不手动拼接用户输入到SQL字符串中,就不用担心SQL注入问题。
附你的代码片段:
const newEmailRecord = { text: 'INSERT INTO email(col1, col2, col3, col4, col5, col6, col7) (SELECT $1, $2, prov_first_name AS col3, prov_email AS col4, $3, $4, $5 FROM provider WHERE prov_id=($6))', values:[ var1, var2, var3, var4, var5, var6ProvId], } await client.query(newEmailRecord);
内容的提问来源于stack exchange,提问作者RJA
相关产品推荐
相关产品推荐

