我正在查看MSSQL模块中针对Node的内置SQL注入保护:
https://www.npmjs.com/package/mssql#injection
但我不能完全了解如何为我的查询清理值的示例。我想request.input('myval', sql.VarChar, '-- commented')
语句消毒" myvar"针对被注释掉的查询的其余部分。
如果我想对其他东西进行消毒,该怎么办?如drop table语句等。
有人可以帮帮我吗?
答案 0 :(得分:1)
只需弄清楚如何工作。 request.input()
接受以下mssql docs中描述的三个参数:
输入(名称,[类型],值)向请求中添加输入参数。
参数
name-输入参数的名称,不带@字符。
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')