Treinamento Estendido com Demonstrações ao Vivo
A arquitetura do nosso ambiente de treinamento simula um ecossistema de microsserviços moderno, compreendendo cinco componentes distintos que interagem entre si. Esta configuração é projetada especificamente para expor as vulnerabilidades que iremos explorar.
-
Banco de Dados PostgreSQL (Docker): A única fonte de verdade para nossas aplicações, contendo dados de usuários, produtos e pedidos.
-
shop-api(Spring Boot): Um backend de e-commerce "legítimo" rodando na porta 8080. Será usado para as demonstrações de Bypass de Validação, SQL Injection, IDOR (visualização), Path Traversal e XSS. -
user-api(FastAPI): Um backend de gerenciamento de usuários rodando na porta 8000. Será usado para as demonstrações de CORS/CSRF e IDOR (modificação). -
legit-shop-ui(Angular): A interface de frontend legítima do e-commerce, rodando na porta 4200 e se comunicando com ambas as APIs. -
malicious-ui(Angular): Um site aparentemente inofensivo rodando na porta 4300, projetado para lançar um ataque CSRF contra auser-api.
Segue um diagrama para representar a aplicação que usaremos:
plantuml::docs/diagrama-geral.puml[format=png]
-
O Preço Não Confiável - Contornando a Validação do Lado do Cliente
-
A Consulta Excessivamente Confiante - SQL Injection
-
O Vizinho Enganoso - CORS, Cookies e CSRF
-
A Identidade Roubada - Referência Insegura e Direta a Objeto (IDOR - Modificação)
-
A Espionagem de Pedidos - IDOR (Visualização)
-
O Caminho Enganoso - Path Traversal
-
O Eco Malicioso - Cross-Site Scripting (XSS) Refletido
-
dockeredocker composepara executar o banco de dadosPostgreSQL -
Os dois frontends usam
Angularversão 19 comNodeJSversão 22 -
O backend
shop-apiutiliza oSpring BooteSpring Data JPAcomJDK 21 -
O backend
user-apiutiliza oFastAPIcomPython 3.12
-
Iniciar o banco de dados com
docker compose up -dna pasta raiz
Verificar se o banco está rodando:
docker compose ps --format "table {{.Service}}\t{{.Status}}\t{{.Ports}}"
SERVICE STATUS PORTS
postgresql Up About a minute (healthy) 127.0.0.1:5432->5432/tcpNo status deve aparecer healthy.
-
Subir o backend
shop-apiexecutandomvn spring-boot:runna pastashop-api
Verificar a saída:
2025-07-25T11:23:25.493-03:00 INFO 61246 --- [Backend de e-commerce "Legitimo"] [ main] b.com.basis.websec.shop_api.Application : Started Application in 1.296 seconds (process running for 1.393)-
Subir o backend
user-apiexecutandouv run uvicorn main:app --reloadna pastauser-api:
As seguintes linas de log devem aparecer:
uv run uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['/home/cedric/Projetos/Basis/treinamentos/treinamento-seguranca-web/user-api']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [73412] using WatchFiles
INFO: Started server process [73414]
INFO: Waiting for application startup.
INFO: Application startup complete.-
Para os dois frontends:
legit-shop-uiemalicious-uirodarnpm run start