feat: enhance security with user-scoped inventory and IDOR protection
Test Suite / test (24.15.0) (push) Has been cancelled
Test Suite / test (24.15.0) (push) Has been cancelled
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
+15
-1
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user