> Как защититься от SQL инъекции (JavaScript)

Уровень: senior · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы

Компании: ESoft

Стек: Node.js, JavaScript, Java

> Пример ответа

На фронтенде напрямую от SQL-инъекций защититься нельзя, так как SQL-запросы выполняются на сервере. Однако фронтенд-разработчик может минимизировать риски:

  1. Валидация и санитизация данных на клиенте - перед отправкой на сервер проверяйте типы, длины и форматы (например, через регулярные выражения). Используйте библиотеки вроде validator.js для Node.js.

  2. Экранирование ввода - если данные отображаются в UI, экранируйте их (например, через textContent вместо innerHTML), чтобы избежать XSS, который может быть использован для косвенной атаки.

  3. Использование параметризованных запросов на сервере - на Node.js с mysql2 или pg применяйте плейсхолдеры (? или $1). Пример:

    JAVASCRIPT
    const query = 'SELECT * FROM users WHERE id = ?';
    connection.execute(query, [userId], (err, results) => { ... });
  4. Ограничение привилегий БД - на сервере используйте отдельного пользователя с минимальными правами (только SELECT, INSERT и т.д.).

  5. Никогда не доверяйте клиенту - все проверки дублируйте на сервере (Java или Node.js). Фронтенд - лишь первый рубеж.

  6. Использование ORM - в Node.js (Sequelize, TypeORM) или Java (Hibernate) они автоматически экранируют параметры.

Главное правило: никогда не конкатенируйте пользовательский ввод в SQL-строку.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью