在postgres插入/更新中正确分隔单引号

时间:2015-08-28 14:27:04

标签: javascript sql postgresql

我很难弄清楚如何在postgreSQL UPDATE语句中划分文本字段中的任何单引号。如果我考虑以下情况,将'替换为''似乎是必要的,它仍然无法正常运行。另外,如果有人在字符串中发送''',你会怎么做?

var userid = request.decoded.id;
var incomingString = "Hello I'm a user.";
var newBio = incomingString.replace("'", "''");

pg.connect(process.env.DATABASE_URL, function(err, client, done){
                   client.query("UPDATE users SET bio = "+newBio+" WHERE user_id = "+userid+"", function(err, result){
                                done();
                                if(err){
                                response.json({message:"err in db input."});
                                }
                                else{
                                response.json({message:"success"});
                                }
                                });
                   });

我应该简单地将上面的SQL语句更改为类似下面的内容吗?这是否解决了SQL注入漏洞并需要转义单引号?

"UPDATE users SET bio = $1 WHERE user_id = $2", [newBio, userid]", 

1 个答案:

答案 0 :(得分:1)

您不应手动转义SQL特殊字符。

你的第二个例子是对的。使用准备/参数化语句可以消除SQL注入威胁。