Pular para o conteúdo

Blog

Protegendo APIs em projetos Node.js e MySQL: práticas recomendadas e exemplos de código

Melhores práticas para segurança API em Node.js e MySQL

  • 3 min de leitura
  • Updated

Protegendo APIs em projetos Node.js e MySQL

API Camadas de segurançaClienteNavegador/aplicativoTLSHTTPS1.3🔒TaxaLimitadorDDoSProteção🛡️AuthJWTVerificarRBAC🔑EntradaValidaçãoSanitizarJoi/Zod✅SQLParamPreparadoDeclarações🗃️MySQLBanco de dadosDefesa em profundidade: cada camada evita uma classe de ataquesNenhuma camada é suficiente – a segurança requer que todas as camadas trabalhem juntasCamada 1Camada 2Camada 3Camada 4Camada 5Criptografatodo o tráfegoBloqueia o brutoAtaques forçadosVerifica a identidade deImpedeXSS / injetarImpedeSQL injeção
API Security Diagram

APIs são a espinha dorsal das modernas aplicações web e móveis. Ao construir APIs com Node.js e MySQL, a segurança deve ser uma prioridade máxima. Este guia aborda práticas recomendadas essenciais e exemplos de código para ajudar você a proteger suas APIs.

Arquitetura de segurança

API

API Security Architecture

Este diagrama mostra uma abordagem em camadas para a segurança do API, incluindo gateway, WAF, autenticação e proteção de banco de dados.

Gateway

API e WAF

API Gateway and WAF

Use um gateway API e um Web Application Firewall (WAF) para centralizar a segurança, a limitação de taxas e a validação de solicitações. Isso ajuda a bloquear o tráfego malicioso antes que ele chegue ao seu aplicativo Node.js.

Usuário

para fluxo de banco de dados

User to DB Flow

Este diagrama mostra o fluxo seguro do usuário para o banco de dados, com verificações de autenticação e autorização em cada etapa.

1. Use HTTPS em todos os lugares

Sempre sirva sua API em vez de HTTPS para criptografar dados em trânsito. Useletsencryptou um certificado comercial SSL.

2. Autenticação e Autorização

  • JWT (JSON Web Tokens):Use JWT para autenticação sem estado. Emita tokens no login e verifique-os em cada solicitação.
  • Controle de acesso baseado em função (RBAC):Restringe o acesso a endpoints confidenciais com base nas funções do usuário.
// 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. Impedir a injeção de SQL

OWASP Principais ameaças e amp; DefesasInjeção SQLConsultas maliciosasConsultas parametrizadasInstruções preparadas e amp; ORMAutenticação quebradaCredenciais fracasJWT + MFA + bcryptRotação de token e amp; hashingXSSInjeção de scriptSanitização de entradaCabeçalhos CSP e amp; escapandoSSRFAcesso internoLista de permissões de URLSegmentação de redeConfiguração incorretaConfigurações padrãoReforço de segurançaHelmet.js & auditoriaCada ameaça tem uma defesa - implemente todas as camadas para proteção completaBaseado no OWASP Os 10 principais riscos de segurança de aplicativos da Web

Sempre use consultas parametrizadas ou bibliotecas ORM (como Sequelize ou Knex) para evitar injeção de SQL.

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

4. Validação e higienização de entrada

Valide e higienize todos os dados recebidos usando bibliotecas comoexpress-validatoroujoi.

5. Dados confidenciais seguros

  • Nunca armazene senhas em texto simples. Sempre hash combcrypt.
  • Armazene segredos (credenciais de banco de dados, segredos JWT) em variáveis de ambiente, não em código.

6. Limitação e aceleração de taxa

Proteja sua API contra ataques de força bruta e DDoS usando middleware de limitação de taxa comoexpress-rate-limit.

7. Registro e monitoramento

Registra todas as tentativas e erros de autenticação. Use ferramentas de monitoramento para detectar atividades suspeitas.

8. Mantenha as dependências atualizadas

Atualize regularmente Node.js, MySQL e todas as dependências para corrigir vulnerabilidades conhecidas.

Leitura adicional

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