0.10 — Onde o código roda: cliente vs servidor (a fronteira que define segurança)

Este conceito separa quem entende de quem não entende segurança web. Existem dois lugares onde código roda, e eles têm níveis de confiança opostos:

   LADO DO CLIENTE (navegador)          │   LADO DO SERVIDOR (edge/VPS/banco)
   ──────────────────────────           │   ─────────────────────────────────
   • Código JavaScript da página        │   • A API, as regras de negócio
   • Tudo é VISÍVEL (F12 → ver fonte)   │   • O código NÃO é visível ao usuário
   • Tudo é EDITÁVEL pelo usuário       │   • O usuário não altera o código
   • ❌ NÃO confie: é território inimigo │   • ✅ Aqui moram as decisões de segurança

Consequências práticas (erros reais que você vai encontrar):

  • Esconder um botão de admin no JavaScript não protege nada — o atacante lê o código e chama a API direto.
  • Validar o formulário só no navegador é inútil para segurança — o atacante pula o formulário e fala com a API na unha (com curl).
  • isPro = true guardado no navegador (localStorage) é editável — a decisão "esse usuário é premium?" tem que ser no servidor (Ex. 13.3).
  • Segredos (chaves de API) nunca no código do cliente — ele é público. (Ex. 25 audita justamente isso.)

Regra de ouro nº 2: tudo que roda no cliente é público e adulterável. Decisões de segurança são sempre no servidor.


entre para marcar esta aula como concluída.

PurpleLab // plataforma de treino ofensivo + defensivo // Fase 1 — portal dinamico