在NodeJS中创建安全的动态SQL语句

时间:2018-03-28 15:04:00

标签: javascript jquery sql-server node.js

我正在尝试创建一个安全的动态SQL语句。我目前有一些创建动态sql语句的东西。我想看看是否有一种很好的方法可以保持动态并避免SQL注入的任何风险。我已经研究过使用参数化查询,但是,您无法将表名和列精确地作为参数。我的应用程序是使用mssql的NodeJS / Express api应用程序。这可以创建参数化查询,但我不太确定如何处理表名和列名。我正在尝试从C#Linq应用程序迁移到Node以在docker上运行。可能不相关,但我认为一个通用函数将有助于节省时间来移动它,但SQL注入是一件事,我想避免它。这就是我目前编写的内容。

//table = Table Name, values = {a: 1, b: 2}, wheres = {id: 5}
var update = (table, values, wheres) => {
    var query = `UPDATE ` + table + `\n SET `
    Object.keys(values).forEach(function (key) {
        if(typeof values[key] === "string"){
            query += key + ` = \'` + values[key] + `\', `
        } else {
            query += key + ` = ` + values[key] + `, `
        }
    })
    //removes extra comma and space
    query = query.substring(0, query.length - 2) + `\nWHERE `
    Object.keys(wheres).forEach(function (key) {
        if(typeof wheres[key] === "string"){
            query += key + ` = \'` + wheres[key] + `\' AND `
        } else {
            query += key + ` = ` + wheres[key] + ` AND `
        }
    })
    //removes extra AND with spaces
    query = query.substring(0, query.length - 5)
    return query
}

0 个答案:

没有答案