diff --git a/RECIPE_IMPORT_REFACTOR_PLAN.md b/RECIPE_IMPORT_REFACTOR_PLAN.md index 6f2a9da9..50fa5a38 100644 --- a/RECIPE_IMPORT_REFACTOR_PLAN.md +++ b/RECIPE_IMPORT_REFACTOR_PLAN.md @@ -17,6 +17,13 @@ Se även: # Plan för omarbetning av receptimport +# 2026-05-07: Säkerhets- och deployförbättringar + +- **Inventory är nu user-scopad:** Alla inventory-operationer kräver och filtrerar på userId i backend (schema, migration, service, controller, tester). +- **IDOR-skydd för inventory:** Det är nu omöjligt för användare att läsa eller ändra andras inventarieposter. Tester verifierar att åtkomst nekas vid försök till IDOR. +- **.gitignore och deploy-hygien:** backend/dist och backend/tsconfig.tsbuildinfo ignoreras och är ej längre spårade i git. .env och .env.* ignoreras, men .env.example finns och är uppdaterad. +- **CI/CD-härdning:** npm audit och prisma validate körs i pipeline. Alla tester och byggen måste passera. + ## Bakgrund Nuvarande importflöde blandar ihop två olika ansvar: diff --git a/Säkerhetshärdningsplan för Recipe-app.md b/Säkerhetshärdningsplan för Recipe-app.md index f0ca1191..a3df7eee 100644 --- a/Säkerhetshärdningsplan för Recipe-app.md +++ b/Säkerhetshärdningsplan för Recipe-app.md @@ -372,14 +372,14 @@ gitleaks protect --staged # kör före varje commit | **Åtgärd** | **Status** | **Ansvarsområde** | | -------------------------------- | ---------- | ----------------------- | | IDOR-skydd: recipes, pantry, meal-plan, receipt-alias | ✅ Klart | Backend | -| IDOR-skydd + userId-filtrering för **inventory** | ⬜ **CRITICAL** | Backend (NestJS/Prisma) | -| `dist/` tillagd i `.gitignore` | ⬜ **HIGH** | Git | -| `.env` (utan suffix) i `.gitignore` + `.env.example` | ⬜ MEDIUM | Git | +| IDOR-skydd + userId-filtrering för **inventory** | ✅ Klart | Backend (NestJS/Prisma) | +| `dist/` tillagd i `.gitignore` | ✅ Klart | Git | +| `.env` (utan suffix) i `.gitignore` + `.env.example` | ✅ Klart | Git | | Helmet, CORS, ThrottlerGuard, ValidationPipe | ✅ Klart | Backend | | Flutter: token-abstraktion (`ITokenStorage`) | ✅ Klart | Flutter | | Flutter: httpOnly cookie-alternativ (om XSS är reell risk) | ⬜ LOW | Flutter + Backend | | Gitea webhook-signaturvalidering (om webhooks används) | ⬜ LOW | Backend | -| `npm audit` i CI-pipeline | ⬜ MEDIUM | CI/CD (Gitea) | +| `npm audit` i CI-pipeline | ✅ Klart | CI/CD (Gitea) | --- @@ -387,9 +387,18 @@ gitleaks protect --staged # kör före varje commit ## 🎯 **8. Prioriterad Ordning för Implementering** -1. **Inventory IDOR + userId-fält** (CRITICAL) — påverkar alla användares data -2. **dist/ i .gitignore** (HIGH) — förhindrar återkommande deploy-problem -3. **bare .env + .env.example** (MEDIUM) -4. **npm audit i CI** (MEDIUM) +1. **Inventory IDOR + userId-fält** (CRITICAL) — ✅ KLART 2026-05-07 +2. **dist/ i .gitignore** (HIGH) — ✅ KLART 2026-05-07 +3. **bare .env + .env.example** (MEDIUM) — ✅ KLART 2026-05-07 +4. **npm audit i CI** (MEDIUM) — ✅ KLART 2026-05-07 5. **Flutter httpOnly cookies** (LOW — kräver arkitekturförändring) 6. **Gitea webhook-validering** (LOW — bara relevant om webhooks används) + +--- + +## 2026-05-07: Sammanfattning av senaste säkerhetsförbättringar + +- **Inventory är nu user-scopad:** Alla inventory-operationer kräver och filtrerar på userId i backend (schema, migration, service, controller, tester). +- **IDOR-skydd för inventory:** Det är nu omöjligt för användare att läsa eller ändra andras inventarieposter. Tester verifierar att åtkomst nekas vid försök till IDOR. +- **.gitignore och deploy-hygien:** backend/dist och backend/tsconfig.tsbuildinfo ignoreras och är ej längre spårade i git. .env och .env.* ignoreras, men .env.example finns och är uppdaterad. +- **CI/CD-härdning:** npm audit och prisma validate körs i pipeline. Alla tester och byggen måste passera. diff --git a/TEKNISK_BESKRIVNING.md b/TEKNISK_BESKRIVNING.md index f2610aee..3209f942 100644 --- a/TEKNISK_BESKRIVNING.md +++ b/TEKNISK_BESKRIVNING.md @@ -97,7 +97,15 @@ Verifiera efter deploy att seed-körning inkluderar uppdaterat kategoriträd och ## Sakerhetsstatus (2026-05-07) -Denna sektion beskriver sakerhetsfunktioner som ar implementerade i kodbasen och hur de ar implementerade tekniskt. +Denna sektion beskriver säkerhetsfunktioner som är implementerade i kodbasen och hur de är implementerade tekniskt. + +### Nytt 2026-05-07: Inventory user-scope, IDOR-skydd och deploy-hygien + +- **Inventory är nu user-scopad:** Alla inventory-operationer kräver och filtrerar på userId i backend (schema, migration, service, controller, tester). +- **IDOR-skydd för inventory:** Det är nu omöjligt för användare att läsa eller ändra andras inventarieposter. Tester verifierar att åtkomst nekas vid försök till IDOR. +- **.gitignore och deploy-hygien:** backend/dist och backend/tsconfig.tsbuildinfo ignoreras och är ej längre spårade i git. .env och .env.* ignoreras, men .env.example finns och är uppdaterad. +- **CI/CD-härdning:** npm audit och prisma validate körs i pipeline. Alla tester och byggen måste passera. + ### Implementerat i backend @@ -138,6 +146,12 @@ sker på remote server. Säkerställ att inga absoluta Windows-sökvägar anv --- ## Nyheter och förbättringar (2026-05-02) +## Nyheter och förbättringar (2026-05-07) + +- **Inventory user-scope och IDOR-skydd:** InventoryItem-modellen har fått userId, migration har backfillat data, och alla endpoints kräver nu CurrentUser. Service och controller är uppdaterade, och tester för IDOR-skydd är på plats. +- **.gitignore och deploy-hygien:** backend/dist och backend/tsconfig.tsbuildinfo är nu ignorerade och ej längre spårade. .env och .env.* ignoreras, .env.example är komplett. +- **CI/CD-härdning:** npm audit och prisma validate körs i pipeline. Testsviten (63 tester) och build måste passera. + ### Ny databasarkitektur: user-scoped produkter diff --git a/review_backend.md b/review_backend.md index c575269a..c4dc7df3 100644 --- a/review_backend.md +++ b/review_backend.md @@ -71,6 +71,7 @@ ## Fas 6: Säkerhet och driftbarhet (parallellt) 1. Säkerhetsgranskning: - Input-validering, auth/role-kontroller, secret-hantering. +- Inventory är nu user-scopad och IDOR-skyddad: Alla inventory-operationer kräver och filtrerar på userId i backend (schema, migration, service, controller, tester). Tester verifierar att åtkomst nekas vid försök till IDOR. 2. Driftbarhet: - Strukturerad loggning, korrelations-id, tydligare metrics. 3. Resiliens: