首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pg (node-postgres)是否会自动清理数据

pg (node-postgres)是否会自动清理数据
EN

Stack Overflow用户
提问于 2017-01-04 11:02:18
回答 3查看 12.5K关注 0票数 18

我正在将node-postgres用于生产应用程序,我想知道是否有什么我应该关注的问题?数据是否由node-postgres自动清理

我在github页面上找不到任何关于它的东西:https://github.com/brianc/node-postgres

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-04 18:27:21

这取决于您如何执行查询:

通过Prepared Statements进行格式化是由服务器执行的,服务器反过来会从任何SQL注入中清理您的查询。但它还有其他限制,比如您不能一次执行多个查询,并且在需要时不能提供经过清理的实体名称。

客户端查询格式化,如由pg-promise实现的查询格式化,可清理值,并在格式化实体名称和多个查询方面提供灵活性。

票数 7
EN

Stack Overflow用户

发布于 2017-01-04 11:49:01

绝对是

!node-postgres中的参数化查询支持是一流的。所有转义都由postgresql服务器完成,以确保跨方言、编码等的正确行为……例如,这不会注入sql:

client.query("INSERT INTO user(name) VALUES($1)","';DROP TABLE user;",function (err,result) { // ... });

这是来自他们的documentation

票数 29
EN

Stack Overflow用户

发布于 2019-02-25 17:30:04

它基本上取决于您如何执行@vitaly-t所描述的查询

假设您将在字符串中定义查询,并按如下方式执行:

代码语言:javascript
复制
var query = `SELECT * FROM table where username='${username}' and password='${password}`;
        
pool.query(query, (error, results) => {
});

这种情况下,如果我传递username=‘’或1=1;--和password=‘’或1=1;--

然后它将返回表中的所有记录(这意味着SQL注入起作用了)

如果我要执行以下查询,则为,但为

代码语言:javascript
复制
pool.query('SELECT * FROM table where username=$1 and password=$2', [username, password], (error, results) => {
});

那么SQL注入将永远不会起作用,因为pg会净化数据。

因此,这取决于您如何执行查询。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41455585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档