Предотвращение внедрения SQL в Node.js

Можно ли предотвратить SQL-инъекции в Node.js (желательно с модулем) так же, как PHP имеет подготовленные операторы, защищающие от них.

Если так, то как? Если не,какие примеры это может обойти код, который ямы предоставляем (см. ниже).

Некоторый контекст: я '

создание веб-приложения с внутренним стеком, состоящим из Node.js + MySql, с использованиемУзел-MySQL модуль. С точки зрения удобства использования, модуль великолепен, но он еще не реализовал что-то похожее на PHPПодготовленные заявления (хотя я'я знаю, что это насделать).

Из моего понимания PHPs выполнение подготовленных заявлений, среди прочего,очень помог в предотвращении инъекций SQL. Я'Я обеспокоен тем, что мое приложение node.js может быть открыто для подобных атак,даже с выходом строки по умолчанию (как в фрагменте кода ниже).

node-mysql, кажется, является самым популярным соединителем mysql для node.js, поэтому мне было интересно, что другие люди могут делать (если вообще что-то), чтобы объяснить эту проблему - или если это даже проблема с node.js для начала (не уверен, как это неЭто так, поскольку ввод на стороне пользователя / клиента).

Должен ли я переключиться наУзел-MySQL-родной на данный момент, так как он предоставляет подготовленные заявления? Я'Я не решаюсь сделать это, потому что он не так активен, как node-mysql (хотя это может означать, что он завершен).

Вот фрагмент кода регистрации пользователя, который используетдезинфицирующее средство модуль вместе с node-mysql 'Подготовленный синтаксис, похожий на оператор (который, как я упоминал выше, выполняет экранирование символов), чтобы предотвратить межсайтовый скриптинг и SQL-инъекции соответственно:

// Prevent xss
var clean_user = sanitizer.sanitize(username);

// assume password is hashed already
var post = {Username: clean_user, Password: hash};

// This just uses connection.escape() underneath
var query = connection.query('INSERT INTO users SET ?', post,
   function(err, results)
   {
       // Can a Sql injection happen here?
   });

Ответы на вопрос(5)

Ваш ответ на вопрос