2015-08-28 79 views
0

我有一個很難搞清楚如何來分隔文本字段的任何單引號在PostgreSQL的UPDATE語句。如果我考慮以下內容,將'替換爲'',這似乎是需要的,但它仍然無法正常工作。另外,如果有人在字符串中發送''',你會怎麼做?在Postgres的正確分隔單引號插入/更新

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

您不應該手動轉義SQL特殊字符。

你的第二個例子是正確的。使用準備/參數化語句消除了SQL注入威脅。