Skip to content

chore(security): hardening de la demo (max-instances, /refresh con token, docs)#33

Merged
aitorevi merged 1 commit into
mainfrom
chore/security-hardening
Jun 2, 2026
Merged

chore(security): hardening de la demo (max-instances, /refresh con token, docs)#33
aitorevi merged 1 commit into
mainfrom
chore/security-hardening

Conversation

@aitorevi

@aitorevi aitorevi commented Jun 2, 2026

Copy link
Copy Markdown
Owner

Resultado de la auditoría de seguridad. La demo (datos ficticios, API pública) no tenía fugas de datos; los riesgos eran de exposición pública + abuso/coste. Este PR los acota.

Cambios

  1. POST /api/sales/refresh protegible: si se configura Refresh:Token, exige el header X-Refresh-Token (comparación de tiempo constante); si no se configura, queda abierto (default demo). El frontend ya no llama a /refresh. → evita que cualquiera dispare la re-ingesta contra la fuente real (coste/rate-limit si fuera SAP/Shopify).
  2. --max-instances 3 en ambos servicios Cloud Run (scripts/deploy-cloudrun.sh + DEPLOY.md) → acota coste/DoS de los servicios públicos. (Ya había alerta de billing.)
  3. DEPLOY.md → sección "Security notes": API pública con datos ficticios, uso del token de refresh, Secret Manager + --set-secrets para los secretos de SAP/Shopify (en vez de --set-env-vars en claro), y recordatorio de errores saneados / SQLite parametrizado / HTTPS.

No incluido (deliberado)

  • CSP con nonces (endurecimiento opcional del frontend) y vitest 4 (vuln crítica dev-only) → follow-ups ya anotados.

Verificación

  • dotnet test78/78 (incluye 2 nuevos del token de refresh).

Para que el --max-instances y el token surtan efecto hay que redesplegar el backend en Cloud Run (guiado), tras mergear.

🤖 Generated with Claude Code

…ken, docs)

- /api/sales/refresh: si Refresh:Token está configurado, exige el header
  X-Refresh-Token (comparación de tiempo constante); si no, abierto (default
  demo). El frontend ya no lo llama. Evita que cualquiera dispare la re-ingesta
  contra la fuente real.
- scripts/deploy-cloudrun.sh + DEPLOY.md: --max-instances 3 en ambos servicios
  (acota coste/DoS de los servicios públicos).
- DEPLOY.md: sección 'Security notes' (API pública con datos ficticios, token de
  refresh, Secret Manager + --set-secrets para SAP/Shopify, errores saneados).
- Tests (76 -> 78): /refresh con token rechaza sin header y acepta con header.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
connect-analyzer Ready Ready Preview, Comment Jun 2, 2026 8:10pm

@aitorevi aitorevi merged commit 597a1e5 into main Jun 2, 2026
4 checks passed
@aitorevi aitorevi deleted the chore/security-hardening branch June 2, 2026 20:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant