<aside> 📋
Delivery 1 — Tarea 3 | Proyecto: vulnerable-node (PsEA v1.0) | Fecha: 2026-02-08 | Método: Reverse Engineering de controladores y servicios
</aside>
Cada User Story fue extraída mediante análisis exhaustivo de:
routes/login.js, routes/products.js) — punto de entrada HTTPmodel/auth.js, model/products.js) — capa de datosviews/*.ejs) — capa de presentaciónscanner/sast/expectedIssues.csv) — referencia autoritativa de CWEsFormato: "Como [rol], quiero [acción], para [beneficio]"
Path de Trazabilidad: Route → Controller:líneas → Model function:línea → SQL pattern → DB Table → View template → CWE mapping
<aside> 🔐
Como visitante, quiero ver un formulario de login para poder autenticarme en la aplicación.
</aside>
| Atributo | Valor |
|---|---|
| Endpoint | GET /login |
| Controller | routes/login.js:10-15 |
| Model | — |
| DB Table | — |
| View | views/login.ejs |
| Bounded Context | BC1: Identity & Access |
| Vulnerabilidades | CWE-79 (XSS: <%-returnurl%> sin escapar) |
<aside> 🔐
Como visitante, quiero enviar mis credenciales para acceder al catálogo de productos.
</aside>
| Atributo | Valor |
|---|---|
| Endpoint | POST /login/auth |
| Controller | routes/login.js:19-42 |
| Model | model/auth.js:do_auth() — línea 7 |
| SQL Pattern | SELECT * FROM users WHERE name='$input' AND password='$input' |
| DB Table | users |
| View | Redirect a returnurl o / |
| Bounded Context | BC1: Identity & Access |
| Vulnerabilidades | CWE-89 (SQL Injection auth.js:7), CWE-601 (Open Redirect login.js:36) |