Node - Oracle 预准备语句不绑定通配符

Node - Oracle prepared statement does not bind wildcards

提问人:Sebastian Galindo 提问时间:5/17/2023 最后编辑:Christopher JonesSebastian Galindo 更新时间:5/18/2023 访问量:42

问:

我有以下代码:

     async test() {
        let conn = null;
        try  {
            conn = await this.connect();

            debug("connection!")

            const SQLstatement = `SELECT * FROM :id`

            const table = 'protocol';
            const response = await conn.execute(SQLstatement, {
                id: { dir: oracledb.BIND_IN, val: table , type: oracledb.STRING }
            });
            conn.commit()

            return response;
        } catch (e) {
            throw e;
        } finally {
            conn.close();
        }
    }

这是一个测试,它已经适用于字符串 concats,但我必须避免 SQL 注入。

该语句不绑定变量,我尝试使用数组表达式但不起作用。

谢谢。

JavaScript .js Oracle SQL注入 节点-oracledb

评论

0赞 Hazik Arshad 5/17/2023
通过连接字符串,已经避免了 SQL 注入。.const table = 'protocol'; const SQLstatement = 'SELECT * FROM ' + table;
1赞 Christopher Jones 5/18/2023
Oracle 绑定仅适用于数据,不适用于 SQL 文本。这是 Oracle 的限制。在验证要追加的名称后,必须使用串联。

答: 暂无答案