我正在尝试为一个小的sqlite创建一个包装器,我知道创建动态查询对SQL不利,但是我想知道这是否安全
async create(item: T): Promise<sqlite3.RunResult> {
// tslint:disable-next-line: no-parameter-reassignment
const values = Object.keys(item).map(_ => _ = '?').join(', ');
const query = `INSERT INTO ${this.table} VALUES (${values})`;
const stmt = await this.database.prepare(query);
return stmt.run(item);
}
因此,基本上,我用我选择的表名称(在代码中)调用具有此功能的类,用户输入对象属性值,并读取所述对象的键,然后使用表创建查询我选择的名称,并从对象生成占位符值,这样安全吗?