mirror of
https://github.com/yusufipk/dead-man-switch-2.0.git
synced 2026-09-11 09:26:07 +00:00
88 lines
2.7 KiB
Markdown
88 lines
2.7 KiB
Markdown
# 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 🔲
|
||
- [ ] Check-in API endpoint
|
||
- [ ] node-cron scheduler setup
|
||
- [ ] Deadline kontrolü
|
||
- [ ] 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 6: Email Gönderimi
|
||
|
||
## Bilinen Sorunlar
|
||
(henüz yok)
|