如何在mssql节点模块中处理SQL注入

在Expressjs项目中,我使用https://www.npmjs.com/package/mssql连接到Microsoft SQL Server并尝试执行存储过程。 根据mssql文档( https://www.npmjs.com/package/mssql#sql-injection )将处理所有的SQL注入,我认为它没有发生。

有人可以帮助我如何处理SQL注入在这个节点模块?

 var sql = require('mssql'); var dbConfig = {}; var Connection = new sql.Connection(dbConfig); Connection.connect().then(function(_connection){ var request = new sql.Request(_connection); request.verbose = true; request.input('username', 'patriksimek'); request.input('password', 'delete from dbo.Users where userId =1'); request.input('attempts', 2); request.execute('my_stored_procedure'); }) 

提前致谢

您正在使用不能被sql注入的存储过程。

你不需要做任何事情。

SQL注入是通过向服务器传递一些SQL语句来破解的技术。

例如代码

 'SELECT * FROM user WHERE username = ' + username 

如果我通过username = 'xxx; DELETE FROM user;' username = 'xxx; DELETE FROM user;' ,那么用户表中的所有logging都将消失

防止SQL注入

  1. 使用查询参数化
  2. 使用存储过程(您现在使用的)