作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 rawQuery,它需要逗号分隔的字符串,但根据文档 here ,第二个参数应该是一个数组:
An array of dynamic, untrusted strings to SQL-escape and inject within the SQL string using the appropriate template syntax for this model's database. (If you have no dynamic values to inject, then just use an empty array here.)
var rawQuery = 'SELECT * FROM "user" WHERE "user"."email" IN ($1)';
User.query(rawQuery, ['a@a.com', 'b@b.com'], function (err, rawResult) {
if (err) { return res.serverError(err); }
return res.ok(rawResult.rows);
});
如何在不通过数组传递变量的情况下使这个查询工作?我可以像这样直接添加变量
var rawQuery = 'SELECT * FROM "user" WHERE "user"."email" IN (' + foo +')';
但是会容易受到SQL注入(inject)攻击。
最佳答案
要不使用参数注入(inject)方式直接运行查询,你需要去掉SQL命令的特殊字符,否则你会像你说的那样被注入(inject)攻击。
有些软件包可以为您做到这一点:最受欢迎的是 npm: sql-escape和 npm sqlstring
他们会将转义字符添加到您的字符串中的任何特殊字符:
var escape = require('sql-escape');
var result = escape('my sweet "string"');
//result: 'my sweet \\"string\\"'
关于postgresql - 风 sails ORM : How to pass value with array in valuesToEscape parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42018338/
我有 rawQuery,它需要逗号分隔的字符串,但根据文档 here ,第二个参数应该是一个数组: An array of dynamic, untrusted strings to SQL-esca
我是一名优秀的程序员,十分优秀!