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。
答案 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()为你逃避。