Как создать подготовленный оператор в Node.JS для MSSQL?

1

Мне нужно вставить строку, определенную в Javascript, в таблицу MSSQL.

Это то, что у меня есть до сих пор:

Javascript:

var message = "It a great day today!";  
$.post('www.server.com/message='+message, function(response){
console.log(response);
});

Сервер Node.js:

//..... a bunch of code has been used to accept the HTTP request and get the message...
// for the purpose of this example, the message is asigned to 'NodeMsg'
var mssqldb = require("../core/mssql"); 
var NodeMsg = theMessageReceivedFromHTTPRequest;
function saveMessage(message) {
    mssqldb.executeMssql("insert into messages (message, status) VALUES('"+message+"', 'new')", function (err) {
      if (err) {
        httpMsgs.show500(req, resp, err);
      }//end if
      else {
        httpMsgs.sendJson(req, resp, 'success');
      }//end else
    });
};

mssql.js (файл node.js):

var mssqldb = require("mssql");
var settings = require("../settings");

exports.executeMssql  = function(sql, callback) {
  var conn = new mssqldb.Connection(settings.mssqlConfig);
  conn.connect()
  .then(function(){
    var req = new mssqldb.Request(conn);
    req.query(sql)
    .then(function (recordset) {
      callback(recordset);
    })
    .catch(function(err){
      console.log(err);
      callback(null, err);
    });
  })
  .catch(function(err){
    console.log(err);
    callback(null, err);
  });
};//end executeMssql

Краткое изложение того, что происходит:

  1. Я определяю сообщение как строку. (обратите внимание, что он содержит одну цитату)
  2. Я отправляю эту строку на сервер Node.js
  3. Я использую Node.js для отправки строки в mssql

Проблема: узнав больше об объектно-ориентированной программе, я пришел к пониманию, что способ, которым я выполняю вставку, сильно осуждается, потому что он открыт для SQL-инъекции. Кроме того, код будет разбит во время выполнения SQL-запроса из-за одиночной кавычки в строке.

Решение. Согласно большинству ресурсов, которые я нашел, решение заключается в использовании "Подготовленных заявлений".

Мой вопрос:

Как я могу преобразовать то, что я уже сделал, использовать подготовленные заявления? Я искал в Интернете для HOURS, и я не могу найти один хороший пример того, как сделать подготовленный оператор с Node.JS для MSSQL (а не MySQL), который понятен новичкам для Node.Js

Теги:
sql-server
sql-injection
prepared-statement

1 ответ

0

Если вы используете реалистичную кросс-платформенную реализацию MSSQL для Tedious, документация находится здесь: http://tediousjs.github.io/tedious/parameters.html

В основном вы готовите инструкцию SQL с заполнителями "@xxx" для значений, которые нужно ввести, вы связываете фактические значения этих параметров с вашим запросом, а затем выполняете свой запрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню