Güvenlik

Veriniz, yalnızca sizin

Güvenlik bizim için bir modülün özelliği değil, şirketin duruşudur: mimarinin ilk gününde alınan ve sonradan gevşetilmeyen kararlar. Aşağıda ne yaptığımızı — ve sınırlarımızı — açıkça yazdık.

1 · Kiracı İzolasyonu

Her şirketin verisi kendi veritabanında

Çok kiracılı sistemlerin en yaygın hatası, tüm müşterilerin aynı tabloda tutulup bir sütunla ayrıştırılmasıdır. Tek bir unutulmuş filtre orada başka bir şirketin verisini gösterir. Biz o riski baştan almıyoruz.

  • Şirket başına ayrı veritabanı: ürün, satış, stok, kasa ve cari veriniz diğer işletmelerden ayrık bir veritabanında durur.
  • Kiracı kimliği yalnızca imzalı giriş bilgisinden: hangi şirkete ait olduğunuz doğrulanmış oturum jetonundaki bilgiden çözülür — adres satırından, başlıktan veya istek gövdesinden asla.
  • Kemer ve pantolon askısı: veritabanları zaten ayrı olduğu hâlde, sorgu katmanında ikinci bir kiracı filtresi daha durur.
  • Şirket bazında yedekleme: yedek alma ve geri yükleme tek bir işletme için yapılabilir; komşu veriyi etkilemez.

Bağlantı bilgileri şifreli durur

Şirket veritabanlarına ait bağlantı bilgileri merkezi kayıtta şifrelenmiş olarak saklanır (AES-256-GCM). Şifre çözme anahtarı veritabanının içinde tutulmaz; ortam değişkeni olarak dışarıdan verilir.

  • Merkezi kayıt sızsa bile bağlantı bilgileri düz metin değildir.
  • Anahtar üretimde zorunludur — anahtarsız açılış kabul edilmez.
  • Ürün, satış ve kasa verisi merkezi kayıtta hiç tutulmaz; yalnız şirketin kendi veritabanındadır.
2 · Kimlik ve Giriş

Parola tek başına bir kapı değildir

İşletme yazılımına giriş, kasaya girmektir. Kimlik katmanını buna göre kuruyoruz.

🔑

Argon2id ile saklama

Parolalar geri çevrilemez biçimde, bellek-maliyetli Argon2id algoritmasıyla saklanır. Düz metin, MD5 veya SHA kullanılmaz. Var olmayan bir kullanıcı için de aynı hesaplama koşturulur; böylece yanıt süresinden “bu e-posta kayıtlı mı?” çıkarımı yapılamaz.

🕳️

Sızmış parola reddi

Yeni bir parola belirlenirken bilinen sızıntı listelerine karşı kontrol edilir; eşleşiyorsa kabul edilmez. Kontrol k-anonimlik yöntemiyle yapılır: parolanın kendisi ya da tam özeti asla dışarı gönderilmez, yalnızca özetin ilk beş karakteri sorulur ve karşılaştırma bizim tarafımızda yapılır.

🔐

İki adımlı doğrulama

Kimlik doğrulama uygulamasıyla çalışan TOTP tabanlı iki adımlı doğrulama her hesap için açılabilir. Kapatmak için hem parola hem güncel doğrulama kodu istenir ve diğer tüm oturumlar iptal edilir — çalınmış bir oturum korumayı tek başına kaldıramaz.

🎫

Kısa ömürlü oturum jetonu

Giriş jetonu asimetrik imzayla (RS256) doğrulanır ve 15 dakikada geçersizleşir. Yenileme jetonu sunucu tarafında saklanır ve her kullanımda değiştirilir; eski bir jetonun yeniden kullanılması hırsızlık sinyali sayılır ve o oturum ailesinin tamamı iptal edilir.

🖥️

Oturum listesi ve zorla çıkış

Kullanıcı, kendi aktif oturumlarını (cihaz/tarayıcı başına bir kayıt) son kullanım ve bitiş zamanıyla görebilir. Kullanıcı yönetimi yetkisi olan yönetici, bir hesabın tüm oturumlarını tek işlemle iptal edebilir — ayrılan personel için kritik.

Deneme sınırı

Art arda hatalı parola denemesi hesabı geçici olarak kilitler; iki adımlı doğrulama adımında da yanlış kod belirli sayıda denendikten sonra o giriş denemesi ölür. Giriş uçlarında ayrıca istek hızı sınırı uygulanır.

Modül kapısı

Yetkinin yanında ikinci bir kapı daha var: işletmenin açık olmayan bir modülüne ait istek, yetkiniz olsa bile sunucuda reddedilir. Modülün kapalı olması yalnızca menüden gizlenmesi demek değildir.

  • Kontrol arayüzde değil, isteğin işlendiği hatta yapılır.
  • Her komut ve sorgu, gerektirdiği izni kendisi bildirir.
  • Bulunamayan kayıt için “yetkiniz yok” yerine “bulunamadı” denir — varlık bilgisi sızdırılmaz.
3 · Yetkilendirme

Yetki ekranda değil, sunucuda

Butonu gizlemek güvenlik değildir: arayüz kullanıcının cihazında çalışır ve değiştirilebilir. Bizde yetki kontrolü, işi yapan kodun hemen önündeki ortak hatta uygulanır — bir özelliğin bunu “hatırlamasına” bırakılmaz.

  • Rol bazlı izinler: kasiyer, garson, kurye, müdür ve sahip farklı yetki kümeleriyle çalışır.
  • Her uçta ayrı kontrol: aynı işlem farklı bir ekrandan veya doğrudan çağrılsa da aynı kapıdan geçer.
  • İstisnalar onaya bağlanabilir: ikram, iptal ve iade gibi hassas işlemler yönetici yetkisi ister ve denetim izine yazılır.
4 · Denetim İzi

Sonradan değiştirilemeyen kayıt

Bir denetim kaydı ancak sonradan değiştirilemiyorsa kanıttır. Bu yüzden kayıtlarımız yalnızca ekleme alır — üzerine yazılmaz, silinmez.

İşletme kayıtlarında hash zinciri

İşletmenizin kendi veritabanındaki işlem denetim kaydı; kim, ne zaman, hangi kaydı, hangi önceki ve sonraki değerlerle değiştirdi bilgisini tutar. Her satır, bir öncekinin kriptografik özetini taşır — yani satırlar birbirine zincirle bağlıdır.

Bir satır sonradan değiştirilir, silinir veya araya bir satır eklenirse zincir kopar ve bu hesaplama yeniden yapıldığında ortaya çıkar. İşletme sahibi bu doğrulamayı panelden çalıştırabilir; sonuç, zincirin ilk kopma noktasını bildirir.

Sistem ve oturum kaydı — kapsam farkı

Girişler, iki adımlı doğrulama olayları ve yönetim işlemleri ayrı bir sistem/oturum kaydında tutulur. Bu kayıt işlem sırasındaki IP adresi ve cihaz/tarayıcı bilgisini de içerir; yetkisiz erişim tespiti ve uyuşmazlık kanıtı için saklanır.

Bu kayıt da yalnızca ekleme alır (güncelleme/silme yoktur), ancak burada hash zinciri yoktur. Zincir, işletme veritabanındaki işlem denetim kaydına özeldir — bunu genelleştirmiyoruz.

5 · Ödeme

Kart bilgileriniz bizde durmaz

Abonelik ödemeleri, lisanslı ödeme kuruluşu iyzico'nun kendi güvenli ödeme sayfasında alınır. Kart numaranız, son kullanma tarihi ve güvenlik kodu Prefux sunucularından geçmez ve Prefux'ta saklanmaz.

  • Ödeme sayfası iyzico tarafında açılır; kart alanları bizim uygulamamızda hiç bulunmaz.
  • Bizde tutulan bilgi, ödemenin sonucudur: tutar, tarih ve işlem referansı.
  • Ödeme bildirimi geldiğinde tutar, bizim önceden yazdığımız bekleyen işlem kaydıyla karşılaştırılarak doğrulanır.

Aktarım ve altyapı

  • Şifreli bağlantı zorunlu: HSTS ile tarayıcıya yalnızca HTTPS üzerinden bağlanması bildirilir.
  • Çerçeveleme koruması: panel başka bir sitenin içine gömülemez (tıklama hırsızlığına karşı).
  • İçerik türü ve yönlendiren politikası sıkılaştırılmış güvenlik başlıklarıyla uygulanır.
  • İstek hızı sınırı hem şirket bazında hem giriş uçlarında ayrıca uygulanır.
  • Bağımlılık taraması her değişiklikte otomatik çalışır; bilinen açığı olan bir paket derleme hattını kırar.
6 · Veri Yaşam Döngüsü

Silme, “yok etme” değil; tanımlanamaz kılma

Ticari ve mali kayıtlar mevzuat gereği silinemez. Kişisel veri ise silinebilir — ve silinir. İkisini birbirine karıştırmıyoruz.

  • Kalıcı silme yok: kayıtlar silinmiş olarak işaretlenir ve sorgulardan otomatik olarak elenir; geçmiş bozulmaz.
  • Hesap silme = anonimleştirme: ad, e-posta, telefon, parola ve iki adımlı doğrulama bilgileri geri döndürülemez biçimde temizlenir; ticari kayıtlar sizinle ilişkilendirilemez hâlde kalır.
  • Kalem kalem yazdık: hangi verinin silindiğini, hangisinin ne kadar süreyle saklandığını ve neden saklandığını ayrı bir sayfada açıkladık.
  • Düzeltme kaydı disiplini: stok ve para kayıtlarında hatalı bir satır silinmez; karşı kayıtla düzeltilir, iki kayıt da görünür kalır.

Güvenlik sorularınızı yanıtlayalım

Kurumsal bir değerlendirme yapıyorsanız veya bir maddenin ayrıntısını merak ediyorsanız yazın; nasıl çalıştığını olduğu gibi anlatalım.