Files
dead-man-switch-2.0/memory-bank/progress.md
T

89 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Progress - Dead Man Switch 2.0
## Fazlar
### Faz 1: Proje Kurulumu & Auth ✅
- [x] Next.js proje kurulumu (Next.js 15, current latest)
- [x] Tailwind + shadcn/ui setup
- [x] PostgreSQL + Prisma setup
- [x] NextAuth.js entegrasyonu
- [x] User tablosu ve auth akışı
- [x] Temel layout ve routing
- [x] Dark mode aktifleştirildi
### Faz 2: Mesaj CRUD ✅
- [x] Message, Recipient, Attachment şemaları
- [x] Mesaj oluşturma formu
- [x] Mesaj listeleme/detay sayfaları
- [x] Mesaj düzenleme/silme
- [x] IDOR güvenlik açığı düzeltildi
### Faz 3: Dosya Yükleme (R2) ✅
- [x] Cloudflare R2 entegrasyonu
- [x] Dosya upload/download API
- [x] Dosya listeleme UI
### Faz 4: Client-side Encryption ✅
- [x] Web Crypto API wrapper
- [x] Encrypt/decrypt utilities
- [x] Şifreli mesaj oluşturma akışı
- [x] Decrypt sayfası (alıcı için)
- [x] Şifreli mesaj düzenleme
- [x] Dosya adı şifreleme
### Faz 5: Check-in & Cron ✅
- [x] Check-in API endpoint
- [x] Interval unit (dakika/saat/gün/ay)
- [x] Deadline kontrolü
- [x] Status güncellemeleri
### Faz 6: Email Gönderimi ✅
- [x] Nodemailer setup
- [x] Email templates
- [x] Deadline triggered email
- [x] Check-in reminder emails
### Faz 7: Admin Panel 🔲
- [ ] Admin role ve guard
- [ ] Kullanıcı yönetimi
- [ ] Mesaj istatistikleri
- [ ] System logs
### Faz 8: Polish & Deploy 🔲
- [ ] Error handling
- [ ] Loading states
- [ ] Responsive tasarım
- [ ] Production deployment
- [ ] Monitoring setup
### Sonradan Yapılacaklar
1. Static Salt in Key Derivation
- Severity: Medium
- Location: src/lib/crypto.ts (Lines 13-13)
- Line Content:
1 salt: encoder.encode("dead-man-switch-salt"),
- Description:
The deriveKeyFromPassword function uses a hardcoded, static salt ("dead-man-switch-salt") for all users and messages. In the event of a database compromise, this allows an attacker to
perform mass rainbow table or dictionary attacks to crack passwords for all users simultaneously. A unique salt per encryption operation is required to force attackers to crack each
password individually.
- Recommendation:
1. Generate a random, cryptographically secure salt (e.g., 16 bytes) for each new message or file encryption operation.
2. Store this salt alongside the ciphertext (e.g., as a prefix to the encrypted string or in a separate database column).
3. Update deriveKeyFromPassword to accept salt as a parameter.
4. Update the encrypt and decrypt flows to pass this unique salt during key derivation.
## Tamamlanan
- ✅ Teknoloji stack seçimi
- ✅ Memory bank oluşturma
- ✅ Faz planlaması
- ✅ Faz 1: Auth sistemi
- ✅ Faz 2: Mesaj CRUD
- ✅ Faz 3: Dosya Yükleme (R2)
- ✅ Faz 4: Client-side Encryption
- ✅ Faz 5: Check-in & Cron
- ✅ Faz 6: Email Gönderimi
## Bilinen Sorunlar
(henüz yok)