即使使用mysql_real_escape_string()函数,是否存在SQL注入的可能性?
考虑这个示例情况.SQL是用PHP构造的,如下所示:
$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));
$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";
Run Code Online (Sandbox Code Playgroud)
我听过很多人对我说,这样的代码仍然很危险,即使使用了mysql_real_escape_string()函数也可以破解.但我想不出任何可能的漏洞?
像这样的经典注射:
aaa' OR 1=1 --
Run Code Online (Sandbox Code Playgroud)
不工作.
你知道任何可能通过上面的PHP代码注入的注入吗?
我正在为我正在处理的网站创建用户注册系统,但我遇到了一些问题.
我正试图远离不得不嵌套回调,因为它有点混乱,我需要帮助的是找到是否有办法用node-mysql创建同步查询
这就是我想要实现的目标.
connection.query("select 1 as email from users where email = " + connection.escape(email), function(err, rows, fields) {
if(err) {
var error = {
error_message: err.code,
error_number: err.errno
};
return res.send(error);
}
if(rows.length > 0) {
var error = {
message: 'Email Address is Taken',
code: 2
};
return res.send(error);
}
});
connection.query("insert into users (email, password) values ("+connection.escape(email)+", "+connection.escape(hash)+")", function(err, rows, fields) {
if(err) {
var error = {
error_message: err.code,
error_number: err.errno
};
return res.send(error);
}
}); …Run Code Online (Sandbox Code Playgroud) 如何防止sql注入。我有这个 sql 查询。
db.query('SELECT data FROM '+(server)+'.users WHERE user = 1');
Run Code Online (Sandbox Code Playgroud) 我正在W3schools上使用SQL示例关注Node.js. 这里
它说下面的代码防止SQL注入。
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address = ' + mysql.escape(adr);
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
当查询值是用户提供的变量时,您应该转义这些值,以防止SQL注入,SQL注入是破坏或滥用数据库的常见Web黑客技术。
这就是解释。
我想了解这是多么安全。(这如何防止SQL注入)。
另外,以下代码危险吗?
var sql = 'SELECT * FROM customers WHERE address = "Mountain 21"';