我正在使用nodejs。创建普通 SQL 查询时,我有以下内容:
var id = req.body.id;
var query = "select from table where id = " + id;
现在,我知道你应该这样转义整数:
var id = parseInt(req.body.id);
这是正确的吗?还是应该像绳子一样逃跑?还是根本就逃不掉?
最佳答案
Is that correct?
不,不是远程。
Or you should escape like a string?
没有。 你也不应该转义字符串。
Or not escape at all?
对于数字和字符串(以及其他),请使用您正在使用的数据库 API 的参数化版本(“准备好的语句”或类似版本),不要“转义”内容。
例如,假设您使用 mysql
npm module 。每the documentation ,该查询将是:
connection.query('select from table where id = ?', [req.body.id], function (error, results, fields) {
// ...
});
这将“转义”留给了提供 API 的模块。如果您使用的是信誉良好的解决方案,那么它已经过彻底的测试和实践证明,而不是任何临时解决方案。
关于javascript - 整数和防注入(inject)保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47073257/