我使用以下内容在查询数据库时效果非常好:
let conn = await sql.connect(process.env.connectionSetup)
let recordset = await conn.query("select * from POLICIES where policyid=912")
res.json(recordset)
Run Code Online (Sandbox Code Playgroud)
问题是在添加参数时,为了防止SQL注入:
let conn = await sql.connect(process.env.connectionSetup)
let recordset = await conn.query("select * from POLICIES where policyid=:policy", { policy: 912})
res.json(recordset)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我收到错误
UnhandledPromiseRejectionWarning:RequestError:“:”附近的语法不正确。
我也尝试过利用?但我得到同样的错误。这和无聊有关系吗?!
谢谢。
为了防止SQL 注入攻击,将值插入 SQL 查询的安全方法是使用SQL 参数。
实际语法可能会有所不同,具体取决于数据库使用的 SQL 方言以及服务器驱动程序 API。
对于 Nodejs mssql,您已经以以下形式标记了模板文字
sql.query`select * from POLICIES where policyid = ${policy}`
Run Code Online (Sandbox Code Playgroud)
根据mssql文档
所有值都会自动清理以防止 SQL 注入。这是因为它被呈现为准备好的语句,因此 MS SQL 对参数施加的所有限制都适用。例如,不能在使用变量的语句中传递/设置列名称。
| 归档时间: |
|
| 查看次数: |
2705 次 |
| 最近记录: |