Перейти к содержимому

Блог

Защита API в проектах Node.js и MySQL: лучшие практики и примеры кода

Рекомендации по обеспечению безопасности API в Node.js и MySQL

  • 3 мин чтения
  • Updated

Защита API в проектах Node.js и MySQL

API Уровни безопасностиКлиентБраузер/приложениеTLSHTTPS1.3🔒Ограничитель скоростиDDoSЗащита🛡️AuthJWTПроверкаRBAC🔑ВводПроверкаСанацияJoi/Zod✅SQLParamПодготовленныеЗаявления🗃️MySQLБаза данныхГлубокая защита: каждый уровень предотвращает определенный класс атакОдного уровня недостаточно — безопасность требует совместной работы всех уровнейУровень 1Уровень 2Уровень 3Уровень 4Уровень 5Шифруетвесь трафикБлокирует бруттосиловые атакиПроверяет личностьПредотвращаетXSS / внедрениеПредотвращаетSQL впрыск
API Security Diagram

API — это основа современных веб-приложений и мобильных приложений. При создании API с Node.js и MySQL безопасность должна быть главным приоритетом. В этом руководстве описаны основные передовые методы и примеры кода, которые помогут вам защитить ваши API.

Архитектура безопасности API

API Security Architecture

На этой схеме показан многоуровневый подход к безопасности API, включая шлюз, WAF, аутентификацию и защиту базы данных.

Шлюз API и WAF

API Gateway and WAF

Используйте шлюз API и межсетевой экран веб-приложений (WAF) для централизации безопасности, ограничения скорости и проверки запросов. Это помогает блокировать вредоносный трафик до того, как он достигнет вашего приложения Node.js.

Поток пользователя в БД

User to DB Flow

На этой диаграмме показан безопасный поток от пользователя к базе данных с проверками аутентификации и авторизации на каждом этапе.

1. Используйте HTTPS везде

Всегда обслуживайте свой API поверх HTTPS для шифрования данных при передаче. Используйтеletsencryptили коммерческий сертификат SSL.

2. Аутентификация и авторизация

  • JWT (веб-токены JSON):Используйте JWT для аутентификации без отслеживания состояния. Выпускайте токены при входе в систему и проверяйте их при каждом запросе.
  • Управление доступом на основе ролей (RBAC):Ограничивает доступ к конфиденциальным конечным точкам на основе ролей пользователей.
// Example: JWT middleware
const jwt = require('jsonwebtoken');
function authenticateToken(req, res, next) {
  const token = req.headers['authorization']?.split(' ')[1];
  if (!token) return res.sendStatus(401);
  jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
    if (err) return res.sendStatus(403);
    req.user = user;
    next();
  });
}
ХТАГ163Х 3. Предотвращение инъекции SQL
OWASP Основные угрозы и amp; ЗащитаSQL ВнедрениеВредоносные запросыПараметризованные запросыПодготовленные операторы и amp; ORMНарушение аутентификацииСлабые учетные данныеJWT + MFA + bcryptРотация токенов и amp; хешированиеXSSВнедрение сценариевОчистка вводаЗаголовки CSP & экранированиеSSRFВнутренний доступСписок разрешенных URL-адресовСегментация сетиНеправильная конфигурацияНастройки по умолчаниюУсиление безопасностиHelmet.js & аудитУ каждой угрозы есть защита — внедрите все уровни для полной защитыНа основе 10 основных рисков безопасности веб-приложений OWASP

Всегда используйте параметризованные запросы или библиотеки ORM (например, Sequelize или Knex), чтобы предотвратить внедрение SQL.

// Using mysql2 with placeholders
const [rows] = await db.execute('SELECT * FROM users WHERE id = ?', [userId]);

4. Проверка и очистка ввода

Проверяйте и очищайте все входящие данные с помощью таких библиотек, какexpress-validatorилиjoi.

5. Защита конфиденциальных данных

  • Никогда не храните пароли в виде открытого текста. Всегда хешируйте с помощьюbcrypt.
  • Храните секреты (учетные данные БД, секреты JWT) в переменных среды, а не в коде.

6. Ограничение и регулирование скорости

Защитите свой API от грубой силы и DDoS-атак с помощью промежуточного программного обеспечения, ограничивающего скорость, такого какexpress-rate-limit.

7. Ведение журнала и мониторинг

Регистрируйте все попытки и ошибки аутентификации. Используйте инструменты мониторинга для обнаружения подозрительной активности.

8. Постоянно обновляйте зависимости

Регулярно обновляйте Node.js, MySQL и все зависимости для устранения известных уязвимостей.

Дополнительная информация

Related reading. For an explainable edge Web Application Firewall on TenthMatrix WSL Proxy, see the WAF blog, the technical article, or wslproxy.org.