Saltar al contenido

Blog

Protección de API en proyectos Node.js y MySQL: mejores prácticas y ejemplos de código

Mejores prácticas para la seguridad de API en Node.js y MySQL

  • 3 min de lectura
  • Updated

Protección de API en proyectos Node.js y MySQL

API Capas de seguridadClienteNavegador/AplicaciónTLSHTTPS1.3🔒TasaLimitadorDDoSProtección🛡️AuthJWTVerificarRBAC🔑EntradaValidaciónSanitizarJoi/Zod✅SQLParámetroPreparadoDeclaraciones🗃️MySQLBase de datosDefensa en profundidad: cada capa previene una clase de ataquesNinguna capa es suficiente; la seguridad requiere que todas las capas trabajen juntasCapa 1Capa 2Capa 3Capa 4Capa 5Cifratodo el tráficoBloquea brutofuerza ataquesVerificaidentidadPrevieneXSS / inyectaPrevieneSQL inyección
API Security Diagram

Los API son la columna vertebral de las aplicaciones web y móviles modernas. Al construir API con Node.js y MySQL, la seguridad debe ser la máxima prioridad. Esta guía cubre las mejores prácticas esenciales y ejemplos de código para ayudarle a proteger sus API.

API Arquitectura de seguridad

API Security Architecture

Este diagrama muestra un enfoque en capas para la seguridad de API, que incluye puerta de enlace, WAF, autenticación y protección de bases de datos.

API Puerta de enlace y WAF

API Gateway and WAF

Utilice una puerta de enlace API y un firewall de aplicaciones web (WAF) para centralizar la seguridad, la limitación de velocidad y la validación de solicitudes. Esto ayuda a bloquear el tráfico malicioso antes de que llegue a su aplicación Node.js.

Usuario a flujo de base de datos

User to DB Flow

Este diagrama muestra el flujo seguro desde el usuario a la base de datos, con comprobaciones de autenticación y autorización en cada paso.

1. Utilice HTTPS en todas partes

Utilice siempre su API sobre HTTPS para cifrar datos en tránsito. Utiliceletsencrypto un certificado comercial SSL.

2. Autenticación y autorización

  • JWT (Tokens web JSON):Utilice JWT para autenticación sin estado. Emita tokens al iniciar sesión y verifíquelos en cada solicitud.
  • Control de acceso basado en roles (RBAC):Restrinja el acceso a puntos finales confidenciales según los roles de los usuarios.
// 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();
  });
}

3. Prevenir la inyección de SQL

OWASP Principales amenazas y amenazas DefensasSQL InyecciónConsultas maliciosasConsultas parametrizadasDeclaraciones preparadas y ORMAutenticación rotaCredenciales débilesJWT + MFA + bcryptRotación y control de tokens hashXSSInyección de scriptDesinfección de entradaEncabezados y amp; escapeSSRFAcceso internoLista de URL permitidasSegmentación de redConfiguración incorrectaConfiguración predeterminadaRefuerzo de seguridadHelmet.js & auditoríaCada amenaza tiene una defensa: implemente todas las capas para una protección completaBasado en OWASP Los 10 principales riesgos de seguridad de aplicaciones web

Utilice siempre consultas parametrizadas o bibliotecas ORM (como Sequelize o Knex) para evitar la inyección de SQL.

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

4. Validación y desinfección de entradas

Valide y desinfecte todos los datos entrantes utilizando bibliotecas comoexpress-validatorojoi.

5. Proteger datos confidenciales

  • Nunca almacene contraseñas en texto plano. Siempre haga hash conbcrypt.
  • Almacena secretos (credenciales de base de datos, secretos JWT) en variables de entorno, no en código.

6. Limitación y regulación de velocidad

Proteja su API de ataques de fuerza bruta y DDoS utilizando middleware de limitación de velocidad comoexpress-rate-limit.

7. Registro y monitoreo

Registra todos los intentos y errores de autenticación. Utilice herramientas de monitoreo para detectar actividades sospechosas.

8. Mantener las dependencias actualizadas

Actualice periódicamente Node.js, MySQL y todas las dependencias para parchear vulnerabilidades conocidas.

Lectura adicional

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