javascript - 整数和防注入(inject)保护

标签 javascript sql sql-injection

我正在使用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 的模块。如果您使用的是信誉良好的解决方案,那么它已经过彻底的测试和实践证明,而不是任何临时解决方案。

更多:http://bobby-tables.com/

关于javascript - 整数和防注入(inject)保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47073257/

相关文章:

php - 如何防止PHP中的SQL注入(inject)?

javascript - 如何更改CSS代码中的属性背景颜色

sql - Rails 以什么顺序执行数据库查询

android - 如何将 SQL "NOT IN"运算符与 Room 一起使用

mysql - 将列值设置为行

php - 在 MySQL 中使用绑定(bind)参数作为用户定义的变量是否安全?

sql-server - 转义单引号的环卫怎么能被SQL Server中的SQL注入(inject)打败呢?

javascript - 如何在 lit-element css 样式属性中导入 CSS 框架?

javascript - jquery datepicker 不适用于动态创建的 html

javascript - 使用 Graphql 时在 Mongoose 模式中填充 "Ref"