Mysql Escape()时防止单引号

时间:2013-09-06 18:10:37

标签: javascript mysql node.js code-injection

var user = "hi"; //this info comes from the client in reality
console.log(user); //user

user = client.escape(user); //cient being a Mysql client
console.log(user); //'user'

然后当我插入数据库时​​,单引号仍然存在。 当我选择它时,仍然存在......

有没有办法确保客户端没有进行注入工作,同时不在数据库中添加单引号?或者至少是一种删除它们的方法,例如unescape()?

我可以使用user.slice(1,-1),但这似乎不是正确的方法。

注意:我正在使用Nodejs。

1 个答案:

答案 0 :(得分:1)

所以我猜您正在使用node-mysql驱动程序,而您的错误是您尝试查询表单

client.query('SELECT * FROM USERS WHERE userName = ?', user, function(err, result){
    if (err) {
        console.log(err);
    });

并且您的查询错误看起来像

check your syntax around 'user_inputted_username''' on line x

在这种情况下,Andreas Hultgren有正确的答案;你只是逃过了两次这个价值。我知道,因为他的建议刚刚解决了我的问题,这就是我刚才描述的问题。只需提供未转义的用户输入作为您的参数,以便通过?和.query()为你逃避。