Güvenlik ve Gizlilik

Summary

Proje, “en az yetki + en az veri” ilkesine göre tasarlandı. Kullanıcı hesabı yoktur; kişisel veri toplanmaz; API herkese açıktır ama yalnızca okuma yapar. Saldırı yüzeyi kasıtlı olarak minimize edildi.

Güvenlik İlkeleri

  1. Veri toplama: ihtiyaç yoksa toplama.
  2. Yetki: en az yetkili kimlik bilgisi.
  3. Bağımlılık: kaynak güvenilir, versiyon kilitli.
  4. Sır: repoya asla sızmaz; Cloudflare secrets + dashboard.
  5. Kullanıcı gücü: kullanıcı bilgisi paylaşmak istemezse uygulama tam çalışır.

Veri Akışı — Kullanıcıdan Ne Alınıyor?

VeriKaynakSaklamaAmaç
Konum (opsiyonel)Tarayıcı/cihazİstemcide; asla sunucuya gönderilmez”Yakınımdaki duraklar” özelliği
FavorilerKullanıcı seçimilocalStorage (cihazda)Favori durak/hat listesi
Ulaşım kartı numarasıKullanıcı girişilocalStorage (cihazda)Bakiye sorgulama kolaylığı
Geri bildirim mesajıFormPocketBaseHata/öneri yönetimi
Ad/e-posta (opsiyonel)Geri bildirim formuPocketBaseYanıtlama (gerekirse)

Sunucuya yükümlülük yaratacak hiçbir veri zorunlu değil

Kullanıcı konumunu, adını, e-postasını, kart numarasını paylaşmak zorunda değildir. Hiçbiri paylaşılmazsa uygulamanın temel özellikleri çalışmaya devam eder.

Kullanıcı Hesabı Yok

  • Kayıt yok.
  • Parola yok.
  • Oturum yönetimi yok.
  • JWT yok.

Bu, kimlik doğrulama saldırılarının tamamını ortadan kaldırır: credential stuffing, session hijacking, XSS tabanlı token çalma, vb.

Ağ Güvenliği

KatmanÖnlem
TransportTLS 1.3 (Cloudflare otomatik)
CORSWildcard (*) — API kasıtlı olarak halka açık
Rate LimitingGeri bildirim endpoint’inde IP bazlı
Güvenlik başlıklarıpublic/_headers ile Cloudflare Pages üzerinden

KVKK / GDPR Uyumluluğu

Proje gizliliği veri minimizasyonu ile çözer:

  • Kişisel veri toplanmıyor → GDPR Article 5 (1)(c) “data minimisation” otomatik karşılanıyor.
  • Üçüncü taraf takibi yok — sadece self-hosted Umami (cookieless).
  • Kullanıcı silme hakkı — zaten veri yok.
  • Çerez — sadece Cloudflare’ın teknik çerezleri.

Analitik — Privacy-First

Google Analytics yerine self-hosted Umami kullanıldı:

  • Cookieless.
  • Kişisel veri toplanmaz.
  • Yalnızca toplam sayfa görüntüleme verisi.
  • Ortam değişkeni (VITE_UMAMI_ENABLED) ile kapatılabilir.

Bağımlılık Güvenliği

ÖnlemNasıl
Versiyon kilitlemesipackage-lock.json committed
Sürüm güncellemeleriPeriyodik olarak devbox run install:all + test suite
Güvenlik taramasıGitHub Dependabot alerts
Bağımlılık felsefesiAz sayıda, iyi bakılan, olgun kütüphaneler

Sır Yönetimi

  • .env dosyaları gitignore’da.
  • .env.example committed; sadece değişken isimleri.
  • Backend secrets: npx wrangler secret put ile Cloudflare’a.
  • Frontend VITE_*: build-time public; hiçbir zaman gizli bir şey içermez.
  • Android keystore: repoda değil; dışarıda saklanır.

Saldırı Yüzeyi

Proje basit kalarak yüzeyi küçük tutar:

Saldırı türüUygulanabilir mi?
SQL InjectionVeritabanı yok
XSSReact otomatik escape; dangerouslySetInnerHTML kullanılmıyor
CSRFDurum değiştirici yetkili istek yok
SSRFBackend sadece sabit bir upstream’e çıkıyor
IDORKullanıcı kaynağı yok
Session hijackingOturum yok
Man-in-the-middleTLS 1.3 her yerde

Tehdit Modeli (Kısaca)

flowchart LR
  User[Kullanıcı] -- TLS --> Edge[Cloudflare Edge]
  Edge -- TLS --> Worker[Worker]
  Worker -- TLS --> Upstream[Resmi API]
  Worker --> KV[(KV)]
  Attacker[Saldırgan] -- bot/spam --> Edge
  Edge -- rate limit --> Attacker

İnce Ayrıntılar

  • Robots meta — istenmeyen tarayıcı davranışı engellenir.
  • Subresource Integrity — harici scriptler için hash doğrulaması.
  • CSP (hazırlık) — Content Security Policy için altyapı mevcut.

Devamı