Node MSSQL"/>
Node MSSQL
我正在查看用于节点的MSSQL模块中的内置SQL注入保护:
但是我并没有完全得到他们的示例,该示例如何清理查询的值。我猜想request.input('myval', sql.VarChar, '-- commented')
语句针对被注释掉的其余查询清除了“ myvar”。
如果我也想对其他东西进行消毒怎么办?例如删除表语句等。
有人可以帮我吗?
回答如下:只是想出了如何解决这个问题。 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')
更多推荐
Node MSSQL
发布评论