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
-
docker
edocker compose
para executar o banco de dadosPostgreSQL
-
Os dois frontends usam
Angular
versão 19 comNodeJS
versão 22 -
O backend
shop-api
utiliza oSpring Boot
eSpring Data JPA
comJDK 21
-
O backend
user-api
utiliza oFastAPI
comPython 3.12
-
Iniciar o banco de dados com
docker compose up -d
na 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/tcp
No status deve aparecer healthy
.
-
Subir o backend
shop-api
executandomvn spring-boot:run
na 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-api
executandouv run uvicorn main:app --reload
na 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-ui
emalicious-ui
rodarnpm run start