Node MSSQL-如何使用内置的SQL注入保护

问题描述 投票:3回答:1

我正在查看用于节点的MSSQL模块中的内置SQL注入保护:

https://www.npmjs.com/package/mssql#injection

但是我并没有完全得到他们的示例,该示例如何清理查询的值。我猜想request.input('myval', sql.VarChar, '-- commented')语句针对被注释掉的其余查询清除了“ myvar”。

如果我也想对其他东西进行消毒怎么办?例如删除表语句等。

有人可以帮我吗?

sql-server node.js sql-injection
1个回答
1
投票

只是想出了如何解决这个问题。 request.input()接受以下mssql docs中描述的三个参数:

输入(名称,[类型],值)将输入参数添加到请求中。

参数

名称-输入参数的名称,不带@字符。

type-输入参数的SQL数据类型。如果省略类型,则模块 自动基于JS决定应使用哪种SQL数据类型 数据类型。

value-输入参数值。未定义的ans NaN值为 自动转换为空值。

所以您使用它的方式如下;

let id= 123456
const stmt = 'SELECT * FROM Users WHRE User=@userId'
request.input('userId', sql.Int, id);
request.query(stmt)

注意:

  • [id是保存我的值的变量,并用作request.input(name, type, value)中的第三个参数。
  • userId只是我为使用@userId在sql语句中使用的变量指定的名称。在request.input()中,将id值分配给sql语句中的userId
  • 最后sql.Int只是一种数据类型,将用于验证进入userId的日期。您可以通过将sql导入同一文件来使用它:const sql = require('mssql')
© www.soinside.com 2019 - 2024. All rights reserved.