如何清理 sql.js 输入?

Posted

技术标签:

【中文标题】如何清理 sql.js 输入?【英文标题】:how to sanitize sql.js inputs? 【发布时间】:2021-11-24 09:33:27 【问题描述】:

我正在使用 sql.js 来管理我为电子应用程序创建的 SQLite 文件。我的问题是我想确保所有输入都经过消毒。截至目前,我正在使用这样的语句:

const SQL = await sqljs();
const db = new SQL.Database();

// These values are just examples and will be user inputs through electron.
let id = 1;
let name = 'row name';

db.run(`INSERT INTO tableName VALUES ($, 'hello');`);

我很确定这种方式是不安全的,并且会导致 SQL 注入。我能做些什么来防止这样的问题?非常感谢。

【问题讨论】:

【参考方案1】:

您可以使用绑定参数。这些是传递给数据库引擎并且不作为 SQL 语句的一部分进行解析的值:

let id = 1;
let name = 'row name';

/* Either pass in a dictionary to use named bound parameters */
db.run("INSERT INTO tableName VALUES(:id, :name)",  ':id': id, ':name': name );

/* Or an array to use positional bound parameters */
db.run("INSERT INTO tableName VALUES(?, ?)", [id, name]);

更多信息请访问SQLite documentation 和sqljs documentation。

【讨论】:

以上是关于如何清理 sql.js 输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何清理 laravel 请求输入?

如何清理复选框?

如何清理dns缓存

清理Angular2中的输入[重复]

如何清理sql server 2008日志

如何在邮件发送前清理 PHP 中的用户输入?