我正在研究 Node 的 MSSQL 模块中内置的 SQL 注入保护:
https://www.npmjs.com/package/mssql#injection
但我并没有完全理解他们如何清理查询值的示例。我猜是request.input('myval', sql.VarChar, '-- commented')
语句针对被注释掉的查询的其余部分来清理“myvar”。
如果我还想对其他东西进行消毒怎么办?比如drop table语句等。
有人可以帮我吗?
刚刚弄清楚如何工作。request.input()
接受下面描述的三个参数MSSQL 文档:
input(name, [type], value) 向请求添加输入参数。
论据
name - 不带@char的输入参数的名称。
type - 输入参数的 SQL 数据类型。如果省略类型、模块
根据JS自动决定使用哪种SQL数据类型
数据类型。
value - 输入参数值。未定义的和 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
只是我为将在 sql 语句中使用的变量指定的名称@userId
。在里面request.input()
, id
值被分配给userId
在sql语句中。
- Lastly
sql.Int
只是一种数据类型,用于验证进入的日期userId
。您可以通过在同一文件中导入 sql 来使用它:const sql = require('mssql')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)