Sobes.tech
Back to questions
Junior — Middle
90

Какими методами можно защитить приложение от внедрения вредоносных SQL-запросов?

Answer from AI

sobes.tech AI

Для защиты приложения на Node.js от внедрения вредоносных SQL-запросов (SQL-инъекций) применяются следующие методы:

  • Использование параметризованных запросов (prepared statements): вместо конкатенации строк с данными пользователя используйте параметры, которые драйвер базы данных обрабатывает безопасно.

  • ORM и библиотеки с защитой от инъекций: такие как Sequelize, TypeORM, Knex, которые автоматически экранируют параметры.

  • Валидация и санитизация входных данных: проверяйте и очищайте данные, поступающие от пользователя, чтобы исключить опасные символы.

  • Использование ORM или query builders: они помогают строить запросы безопасно, уменьшая риск ошибок.

  • Минимизация прав доступа к базе: пользователь базы данных, под которым работает приложение, должен иметь минимально необходимые права.

Пример параметризованного запроса с использованием mysql2:

const mysql = require('mysql2/promise');

async function getUserById(userId) {
  const connection = await mysql.createConnection({host:'localhost', user:'root', database:'test'});
  const [rows] = await connection.execute('SELECT * FROM users WHERE id = ?', [userId]);
  await connection.end();
  return rows;
}

В этом примере значение userId не вставляется напрямую в строку запроса, а передается как параметр, что предотвращает SQL-инъекции.