Aplicação simples em Node.js + Express + EJS para demonstração de DevSecOps/AppSec em live.
- Express com EJS.
- Páginas: Home, Info, Monitor e Tools.
- APIs:
/api/health,/api/version,/api/metricse/ready. - Helmet, rate limiting e compressão.
- Echo escapado para demonstrar proteção básica contra XSS refletido.
- Workflow de segurança com:
- Bearer como SAST.
- OWASP Dependency-Check como SCA.
- Gitleaks como secret scan.
- Workflow opcional para deploy na Vercel somente depois dos checks de segurança.
npm install
npm startDepois acesse:
http://localhost:3000
Teste rápido:
npm test- Crie um repositório no GitHub.
- Faça push desta aplicação.
- Na Vercel, escolha Add New > Project.
- Importe o repositório.
- Framework preset: Other ou detecção automática.
- Build command: deixe vazio ou use
npm installse a interface pedir. - Output directory: deixe vazio.
- Clique em Deploy.
A Vercel consegue executar uma aplicação Express exportada pelo arquivo src/index.js.
O arquivo .github/workflows/vercel-deploy.yml está pronto, mas você precisa criar estes secrets no GitHub:
VERCEL_TOKENVERCEL_ORG_IDVERCEL_PROJECT_ID
Como obter:
npm i -g vercel
vercel login
vercel link
cat .vercel/project.jsonO arquivo .vercel/project.json mostrará o orgId e o projectId. Não comite a pasta .vercel.
O workflow .github/workflows/security.yml roda em push e Pull Request para main ou master.
Regras de bloqueio já configuradas:
- Bearer: reporta e falha em achados
criticalehigh. - Dependency-Check: falha com
--failOnCVSS 7, cobrindo alta e crítica. - Gitleaks: falha quando encontra segredo no repositório.
- Mostre a aplicação local:
npm install
npm start- Mostre as rotas:
curl http://localhost:3000/api/health
curl http://localhost:3000/api/version
curl http://localhost:3000/api/metrics-
Faça push para o GitHub.
-
Abra um PR simples alterando um texto da home.
-
Mostre a pipeline passando.
-
Mostre que o deploy da Vercel só deve acontecer depois dos checks.
-
Para demonstrar bloqueio, crie uma branch descartável e introduza uma mudança insegura apenas para fins didáticos. Não faça merge dessa branch.
Esta aplicação é propositalmente pequena para reduzir risco de falha durante a live. Ela é boa para demonstrar o fluxo:
Developer -> Pull Request -> Security Checks -> Deploy Preview/Production