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

时间:2016-04-25 12:22:11

标签: sql-server node.js sql-injection

我正在查看MSSQL模块中针对Node的内置SQL注入保护:

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

但我不能完全了解如何为我的查询清理值的示例。我想request.input('myval', sql.VarChar, '-- commented')语句消毒" myvar"针对被注释掉的查询的其余部分。

如果我想对其他东西进行消毒,该怎么办?如drop table语句等。

有人可以帮帮我吗?

1 个答案:

答案 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')