gpt4 book ai didi

postgresql - 风 sails ORM : How to pass value with array in valuesToEscape parameter

转载 作者:行者123 更新时间:2023-11-29 12:03:23 25 4
gpt4 key购买 nike

我有 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-escapenpm 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com