C — Autoavaliação

Responda de memória:

  1. Cite as duas razões pelas quais um profissional de segurança programa.
  2. Ao ler qualquer código, qual é a pergunta-lente que você faz?
  3. No código, como você reconhece um possível XSS em JavaScript?
  4. Qual a diferença, no código, entre uma query SQL vulnerável e uma segura?
  5. Por que SHA-256 é ruim para senha e o que se usa no lugar?
  6. Onde deve ficar a decisão "esse usuário é admin?" — no client ou no servidor? Por quê?
  7. Por que remover um segredo do arquivo atual não resolve se ele já foi commitado no Git?
  8. Onde um segredo (chave de API) deve ficar, e onde nunca deve ficar?
<details><summary>👉 Gabarito</summary>
  1. Automatizar os próprios testes e ler/revisar código para achar/evitar falhas (A.0).
  2. "O que aqui vem do usuário? É validado? É usado como dado ou como comando/HTML?" (A.0).
  3. Uso de dangerouslySetInnerHTML/innerHTML/document.write com dado de usuário, ou eval() de input (A.3).
  4. Vulnerável: concatena o input na string da query (vira comando). Segura: parametriza (input entra como dado) (A.4).
  5. SHA-256 é rápido → GPU testa bilhões/s. Use bcrypt/argon2 (lentos, ajustáveis, com salt) (A.7/Ex. 28).
  6. No servidor — o client é visível e editável; qualquer decisão de segurança feita nele é burlável (A.3/Módulo 0, 0.10).
  7. Porque o Git guarda o histórico: o segredo continua acessível num commit antigo. É preciso rotacionar a chave e limpar o histórico (git filter-repo/BFG) (A.8/Ex. 32).
  8. Deve: em variável de ambiente / Secret da plataforma (.env no dev, com .env no .gitignore). Nunca: escrito no código ou no front-end (A.9).</details>

Checklist prático:

[ ] Rodei um loop de curl em Bash sobre vários paths
[ ] Fiz um request em Python e li o JSON
[ ] Medi a velocidade do SHA-256 e entendi por que é ruim p/ senha
[ ] Li a diferença entre query concatenada e parametrizada
[ ] Procurei segredos/dangerouslySetInnerHTML num bundle JS
[ ] Usei a IA para revisar um trecho e entendi a resposta
[ ] Verifiquei .gitignore e procurei segredos no histórico git (gitleaks)
[ ] Criei um .env ignorado pelo git e rodei npm audit

Conclusão: 6/8 do quiz + checklist completo.


entre para marcar esta aula como concluída.

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