Предотвращение внедрения 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?
});