Mini-quiz de fixação (responda antes de seguir)

Tente responder sem olhar. Gabarito logo abaixo.

  1. Qual a diferença entre autenticação e autorização? Dê um exemplo de autorização quebrada.
  2. Por que "esconder o botão de admin no JavaScript" não é uma medida de segurança?
  3. O cadeado (HTTPS) garante que o site é seguro por dentro? Explique.
  4. Você recebe HTTP 200 ao acessar /api/admin/leads sem enviar nenhum token. Isso é bom ou ruim? Por quê?
  5. Por que SHA-256 é uma má escolha para guardar senhas, e o que usar no lugar?
  6. Complete a regra de ouro: "Todo dado que entra é _______ até prova em contrário."
  7. Explique, no padrão entrada→processamento→saída, por que um XSS acontece.
<details> <summary>👉 Gabarito (clique/expanda)</summary>
  1. AuthN = provar quem você é (login). AuthZ = o que você pode fazer (permissões). Exemplo de authZ quebrada: um usuário comum com token válido consegue acessar /api/admin porque o servidor não checou o papel (role) — só checou se o token existia (Ex. 7).
  2. Porque o JavaScript roda no cliente, que é visível e editável. O atacante lê o código e chama a API de admin diretamente com curl, ignorando o botão. Segurança tem que estar no servidor (0.10).
  3. Não. HTTPS/TLS protege o transporte (ninguém no caminho lê/altera). Não diz nada sobre a segurança da aplicação — o site pode ter SQLi, RLS aberto, senha fraca. Cadeado ≠ site confiável (0.5).
  4. Ruim — achado crítico. Um endpoint de admin deveria exigir credencial e responder 401. Um 200 sem token significa que qualquer um acessa dados protegidos. Mesmo status (200), leitura oposta conforme o contexto (0.3).
  5. SHA-256 é rápido → GPU testa bilhões/s → senha fraca cai em segundos. Use bcrypt ou argon2 (lentos e ajustáveis) + salt (0.7).
  6. hostil (ou "suspeito"/"não confiável").
  7. Entrada: o atacante envia um texto com <script>. Processamento: o servidor guarda e depois devolve esse texto na página sem tratar. Saída: o navegador da vítima executa o texto como código. Causa raiz: confiou na entrada e a colocou na saída sem separar dado de código (0.12).</details>

Critério para avançar: se você acertou 5/7 explicando com suas palavras, está pronto para seguir — pela Trilha do projeto (Nível 1) ou pela Formação (Módulo 1 — Redes). Se não, releia as seções ligadas às questões que errou — sem pressa. Este alicerce paga juros em todos os módulos seguintes.


entre para marcar esta aula como concluída.

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