PDF hazırlanıyor...

Kimlik Doğrulama ve Oturum Hataları

Yazar: Selvi Dilara Kahraman
Tarih: 24 Eylül 2025

Kimlik Doğrulama ve Oturum Yönetiminde Kritik Hatalar

Küçük bir senaryo düşünelim: Bir kullanıcı sosyal medya hesabına giriş yapmak istiyor. Parolasını yazıyor, oturumu açılıyor ve gün boyu giriş yapmış halde kalıyor. Eğer bu süreçte kullanılan şifreleme yöntemleri zayıfsa, çerezler yanlış ayarlanmışsa ya da çok faktörlü doğrulama eksikse, saldırganın işi hiç de zor değil. Kullanıcı farkında olmadan hesabı ele geçirilebiliyor.

Kimlik doğrulama ve oturum yönetimi, aslında web güvenliğinin bel kemiği. Çünkü kullanıcıyı gerçekten o kişi yapan şey “hesabına güvenli bir şekilde bağlanabilmesi”dir. Buradaki en ufak bir zafiyet, sadece bireysel hesapları değil, tüm sistemi riske atabilir.

 

Kimlik Doğrulama Neden Her Sistemin Kalbi?

Bir apartmana girerken güvenlik görevlisinin herkese kapıyı açtığını düşünün. Kim olduğunuzu sormuyor, kimliğinizi kontrol etmiyor, sadece “giren girsin” diyor. İlk bakışta kolay gibi görünse de içeride yaşayan herkes için büyük bir risk oluşturur.

Web uygulamalarında da kimlik doğrulama (authentication) ve oturum yönetimi (session management) işte bu güvenlik görevlisi gibidir. Kimlik doğrulama sisteminize giren kişinin gerçekten iddia ettiği kişi olup olmadığını kontrol eder. Oturum yönetimi ise, giriş yapan kişinin o kimlikle oturuma devam edip etmediğini düzenler. Bu süreçlerde yapılan en küçük hata bile, kullanıcı hesaplarının çalınmasına, oturumların ele geçirilmesine ve kritik sistemlerin tamamen ifşa olmasına neden olabilir. Bu yazıda kimlik doğrulama ve oturum yönetiminde en sık yapılan hataları inceleyecek, doğru stratejiler ve pratik çözümler sunacağız.

 

Kimlik Doğrulama ve Oturum Hataları Görsel 1

 

Parolaları Güvenle Saklamanın Sırları

Düz Metin Parola Saklama

En büyük hatalardan biri, kullanıcı parolalarını düz metin (plain text) olarak saklamaktır. Ne yazık ki geçmişte birçok büyük ihlal bu yüzden yaşandı. Örneğin, 2012’de yaşanan Linkedln şifre sızıntısı, milyonlarca kullanıcının hesabının ele geçirilmesine yol açtı.

 

Hashing: Tek Yönlü Güvenlik

Parolalar hiçbir zaman geri çevrilemez şekilde saklanmalıdır. Hash algoritmaları bunun için kullanılır. Ancak burada da hatalar yapılabiliyor. Eski ve hızlı algoritmalar (MD5, SHA-1) kolayca kırılabiliyor.

Doğru yaklaşım: Yavaş, modern ve parametrelenebilir algoritmalar (örn. bcrypt, Argon2, scrypt) kullanmak.

 

Salting: Benzersizlik Katmak

Salt, her kullanıcı için farklı rastgele bir değer ekleyerek aynı parolaların farklı hash sonuçlarına sahip olmasını sağlar. Böylece saldırganlar rainbow table gibi hazır saldırı tekniklerini kullanamaz.

 

Peppering: Gizli Ek Katman

Pepper ise sunucu tarafında saklanan gizli bir anahtarın hash işlemine dahil edilmesidir. Bu da saldırganın veritabanını ele geçirse bile şifreleri çözmesini zorlaştırır.

Özet: Parolaları güvenli saklamak için hashing + salting (ve tercihen peppering) birlikte kullanılmalıdır.

 

2FA / MFA Yöntemleri

SMS tabanlı doğrulama: Telefonunuza gelen kısa mesaj kodlarıyla giriş yapmayı içerir. Kolay uygulanır ve kullanıcı dostudur, ancak SIM swap saldırıları veya SMS yoluyla yapılan phishing saldırıları nedeniyle risk taşır.

 

Authenticator uygulamaları (Google Authenticator, Authy): Telefonunuza yüklenen uygulamalar üzerinden üretilen tek seferlik kodlarla giriş sağlar. SMS’e göre daha güvenlidir çünkü kod cihaz üzerinde oluşturulur ve ağ üzerinden iletilmez.

 

Donanım anahtarları (YubiKey, FIDO2/WebAuthn): Fiziksel bir cihaz kullanarak kimlik doğrulama sağlar. En yüksek seviyede güvenlik sunar ve phishing saldırılarına karşı neredeyse tamamen bağışıklık kazandırır. Özellikle kritik veya yönetici hesapları için önerilir.

 

Push bildirimleri: Mobil cihazınıza gelen onay bildirimleriyle giriş yapılmasını sağlar. Kullanıcı dostudur ve hızlıdır, ancak farkında olmadan yanlışlıkla onay tıklamaları riski vardır.

 

Öneri: Yönetici ve kritik hesaplarda MFA zorunlu olmalı; standart kullanıcılar için de alternatif doğrulama yöntemleri sunulmalı ve MFA’nın önemi anlatılmalıdır.

 

Kimlik Doğrulama ve Oturum Hataları Görsel 2

 

JWT mi, OAuth mu, SAML mi? Hangisini Seçmeli?

Kimlik doğrulama ve oturum yönetiminde farklı standartlar ve teknolojiler kullanılır.

JWT (JSON Web Token)

  • Avantaj: Basit, stateless, dağıtımı kolay.
  •  
  • Risk: Token çalındığında oturum süresi boyunca tüm erişim sağlanır. Token sürelerini kısa tutmak şarttır.
 

OAuth 2.0

  • Avantaj: Üçüncü taraf servislerle güvenli yetkilendirme sağlar (ör. “Google ile giriş”).
  •  
  • Risk: Yanlış yapılandırılmış “scope” izinleri saldırılara yol açabilir.
 

SAML (Security Assertion Markup Language)

  • Avantaj: Kurumsal ortamlarda tek oturum açma (SSO) için güçlüdür.
  •  
  • Risk: XML imza doğrulama açıkları ve konfigürasyon zorlukları.
 

Kısaca:

  • Basit uygulamalarda JWT,
  • Üçüncü taraf erişimlerinde OAuth,
  • Kurumsal entegrasyonlarda SAML tercih edilir.
 

Sessiz Tehdit: Session Fixation

Session fixation, saldırganın bir kullanıcıya önceden belirlediği oturum kimliğini kullandırmasıyla gerçekleşen bir saldırı türüdür. Kullanıcı giriş yaptığında, saldırgan aynı session id üzerinden oturumu ele geçirebilir ve sisteme yetkisiz erişim sağlayabilir.

 

Neden Tehlikeli?
Çünkü kullanıcı farkında olmadan saldırganın kontrolündeki oturuma bağlanır ve sistem, giriş yapan kişinin gerçekten yetkili olduğunu düşünür. Bu durum kritik veri sızıntılarına, hesap ele geçirmelere veya sistemde yetkisiz işlemlere yol açabilir.

 

Doğru Yaklaşım:

  • Session yenileme: Giriş başarılı olduktan hemen sonra yeni bir session id oluşturun ve eski id’yi geçersiz kılın.
  • Güvenli çerez ayarları: HttpOnly, Secure ve uygun SameSite seçeneklerini aktif edin.
  • Oturum süresi yönetimi: Kısa ömürlü oturumlar ve inaktif oturumları otomatik sonlandırma.
  • Eski oturumları iptal etme: Özellikle parola değişikliği veya şüpheli etkinliklerde tüm oturumları kapatın.
 

Kontrol Testi
Saldırganın belirlediği session id ile giriş yapılabilir mi? Giriş sonrası id değişiyor mu? Bu basit test, sisteminizin session fixation’a karşı ne kadar güvenli olduğunu gösterir.

 

Kimlik Doğrulama ve Oturum Hataları Görsel 3

 

Çerezler Küçük Ama Kritik: Güvenli Cookie Ayarları

Çerezler (cookies), web uygulamalarında oturum yönetiminin temel taşıdır. Kullanıcının kimliğini doğrulamak, oturum bilgisini tutmak ve uygulama deneyimini kişiselleştirmek için kullanılırlar. Ancak yanlış yapılandırıldıklarında saldırganlar için kolay bir hedef haline gelirler ve hesap ele geçirme, XSS veya CSRF gibi saldırılara zemin hazırlar.

Yalnızca HTTP

  • Bu ayar çerezin JavaScript tarafından okunmasını engeller.
  • Örneğin, bir XSS saldırısı gerçekleşse bile HttpOnly aktif olan çerezler saldırganın eline geçmez.
  • Öneri: Tüm oturum çerezleri için HttpOnly mutlaka aktif olmalıdır.
 

Güvenli

  • Çerezler sadece HTTPS üzerinden iletilir.
  • Böylece saldırganın ağ üzerinden oturum çerezlerini ele geçirme riski azalır (man-in-the-middle saldırıları gibi).
  • Öneri: HTTP yerine HTTPS kullanıyorsanız, tüm kritik çerezler için Secure bayrağı aktif olmalıdır.
 

Aynı Site

  • Çerezin üçüncü taraf sitelerden gelen isteklere eklenmesini engeller.
  • CSRF (Cross-Site Request Forgery) saldırılarını önemli ölçüde azaltır.
  • Strict, Lax ve None gibi seçenekler vardır; uygulamanızın ihtiyaçlarına göre doğru seçimi yapmak kritik önemdedir.
 

Ek Önlemler ve İpuçları

  • Oturum çerezleri mümkün olduğunca kısa ömürlü olmalıdır; inaktif oturumlar otomatik olarak sonlandırılmalıdır.
  • Özel veya yönetici yetkisine sahip çerezler için ekstra güvenlik önlemleri (ör. IP kontrolü, cihaz tanıma) eklenebilir.
  • Çerezlerin default ayarlarla bırakılması genellikle risklidir; uygulamanın güvenlik ihtiyaçlarına göre özelleştirilmelidir.
 

Özet:
Çerezler küçük gibi görünse de, güvenlikte kritik rol oynar. HttpOnly, Secure ve SameSite gibi ayarları doğru şekilde yapılandırmak, kullanıcı hesaplarının güvenliğini sağlamak için temel adımlardan biridir.

 

Parola Sıfırlarken Düşülen Tuzaklar

Kullanıcı deneyimini artırmaya çalışırken güvenlik göz ardı edildiğinde büyük riskler doğar.

  • Sıfırlama linklerinin süresiz veya çok uzun süre geçerli olması.
  • Kolay tahmin edilebilir token’lar üretmek.
  • Sıfırlama sürecinde güvenlik soruları (ör. “annenizin kızlık soyadı”) kullanmak.
  • Kullanıcının eski şifresini yeniden belirlemesine izin vermek.
 

Doğru Uygulama:

  • Tek kullanımlık, kısa ömürlü (15–30 dakika) token üretmek.
  • Token’ları kriptografik rastgelelik ile oluşturmak.
  • Sıfırlama sonrası tüm aktif oturumları iptal etmek.

Kimlik Doğrulama ve Oturum Hataları Görsel 4

 

Brute Force ve Credential Stuffing Saldırılarına Karşı Koruma

1. Brute Force

Brute force saldırısı, saldırganın sürekli ve sistematik bir şekilde tüm olası parola kombinasyonlarını deneyerek kullanıcı hesabına erişmeye çalıştığı saldırı türüdür. Bu saldırılar otomatik araçlarla çok hızlı bir şekilde yapılabilir ve özellikle zayıf veya tahmin edilebilir parolalara sahip kullanıcıları hedef alır.

 

Çözüm ve Önlemler:

  • Rate limiting: Bir IP veya kullanıcı için belirli sayıda başarısız giriş denemesi sonrasında geçici olarak giriş denemelerini engellemek.
  • Hesap kilitleme: Belirli sayıda başarısız giriş denemesinden sonra hesabı geçici kilitlemek.
  • Artan gecikmeler (exponential backoff): Her başarısız denemeden sonra sistemin yanıt süresini kademeli olarak artırmak, saldırganın deneme hızını düşürür.
  • Kullanıcıların basit ve tahmin edilebilir parolalar kullanmasını önlemek.
 

2. Credential Stuffing

Credential stuffing saldırıları, daha önce başka sistemlerden sızdırılmış kullanıcı adı ve şifre kombinasyonlarının, farklı platformlarda yeniden denenmesiyle gerçekleşir. Saldırgan, kullanıcıların aynı parolayı birden fazla platformda kullandığını varsayarak hesaplara erişmeye çalışır.

 

Çözüm ve Önlemler:

  • Sızdırılmış parola kontrolü: Kullanıcıların daha önce sızdırılmış parolaları kullanmasını engellemek için örneğin HaveIBeenPwned gibi hizmetlerle entegrasyon sağlamak.
  • MFA / 2FA zorunluluğu: Tek bir parolanın çalınması durumunda bile, ikinci faktör olmadan giriş yapılamayacağı için saldırganın erişimi engellenir.
  • Kullanıcıları karmaşık ve tahmin edilemez parolalar oluşturmaya teşvik etmek.
  • Şüpheli aktivite takibi: Tek bir IP’den çok sayıda farklı kullanıcıyla giriş denemeleri yapılırsa alarm oluşturmak.
  • Kullanıcı bilgilendirmesi: Hesabında olağan dışı giriş denemeleri fark edilen kullanıcıları bilgilendirmek ve şifrelerini değiştirmelerini istemek.
 

Güvenli Oturum Yönetimi İçin Altın Kurallar

Parolaları asla düz metin saklamayın, modern hashing algoritmaları kullanın.

MFA’yı özellikle kritik hesaplarda zorunlu kılın.

Session ID’leri girişten sonra mutlaka yenileyin.

Çerez ayarlarını (HttpOnly, Secure, SameSite) doğru yapılandırın.

Parola sıfırlama süreçlerini kısa ömürlü ve güvenli hale getirin.

Brute force ve credential stuffing’e karşı rate limiting ve ihlal veritabanı kontrolleri uygulayın.

Kısacası, sadece “kapıyı kilitlemek” yetmez. Doğru anahtarı saklamak, ek kilitler (MFA) kullanmak ve içeride kimlerin dolaştığını sürekli kontrol etmek gerekir.

 

Bir Sonraki Adım...

Bir sonraki yazımızda “Güvenli loglama ve hata yönetimi” konusuna geçerek, logların nasıl güvenlik dostu tutulacağını ve hassas verilerin loglarda ifşa olmamasını inceleyeceğiz.

 

Bir önceki bölüm olan "Input Validation ve Sanitization Stratejileri" adlı yazımıza ulaşmak için tıklayınız..

Etiketler

Kimlik Doğrulama 2FA ve MFA Oturum Güvenliği