
Oturum Sabitleme: Girişten Sonra Kimliği Yenilemek
Kullanıcı giriş yaptı ve her şey normal görünüyor. Ama oturumu tanımlayan değer, giriş yapmadan önce de aynıydı. Eğer o değeri saldırgan önceden belirlediyse, kullanıcı giriş yaptığı anda saldırgan da o hesaba girmiş olur — hiçbir şifre çalmadan.
Bu yazı, oturum kimliğinin doğru yönetimini ele alıyor.
Saldırı Nasıl İşler
- Saldırgan sitenizden bir oturum kimliği alır.
- Kurbanı o kimlikle siteye sokar.
- Kurban giriş yapar.
- Kimlik değişmezse saldırgan içeridedir.
Dördüncü adım tüm meselenin kilididir: giriş sırasında oturum kimliği yenilenmezse, giriş öncesi geçerli olan kimlik giriş sonrası da geçerli kalır — ve o kimliği bilen herkes artık oturum açmış kullanıcıdır.
Saldırganın şifreyi bilmesine gerek yoktur.
Yalnızca kimliği önceden belirlemesi yeterlidir.
Bu, tek satırlık bir düzeltmeyle engellenir.
Çözüm
- Girişte kimlik yenilenir.
- Eski kimlik geçersiz olur.
- Oturum verisi taşınır.
İkinci madde korumayı tamamlar: yeni kimlik üretmek yetmez, eski kimliğin de geçersiz kılınması gerekir — aksi hâlde saldırgan elindeki eski kimlikle oturuma erişmeye devam edebilir.
Çoğu çerçeve bu işlemi tek çağrıyla yapar.
Sepet gibi giriş öncesi veriler taşınmalıdır.
Aksi hâlde kullanıcı sepetini kaybeder.
Ne Zaman Yenilenmeli
| Olay | Yenileme |
|---|---|
| Giriş yapıldığında | Zorunlu |
| Yetki yükseldiğinde | Zorunlu |
| Şifre değiştiğinde | Zorunlu |
| Her istekte | Gereksiz ve sorunlu |
Dördüncü satır iyi niyetli bir aşırılıktır ve zarar verir: her istekte oturum kimliğini yenilemek, aynı anda gelen paralel isteklerde yarış koşulu üretir ve kullanıcı rastgele çıkış yapmış gibi görünür.
Bu, teşhisi çok zor bir şikayet üretir.
İkinci satır ise yönetici moduna geçiş gibi durumları kapsar.
Yetki değişiminde kimlik yenilenmelidir.
Çerez Ayarları
- Yalnızca şifreli bağlantıda gönderilsin.
- Betikler tarafından okunamasın.
- Dış isteklerde sınırlansın.
İkinci madde tarayıcı tarafındaki en önemli korumadır: oturum çerezini betiklerin okumasına kapatmak, sitenizde bir betik açığı bulunsa bile oturum bilgisinin çalınmasını engeller — bu ayar tek satırlıktır ve hiçbir maliyeti yoktur.
Birinci madde ise şifresiz ağlarda dinlenmeyi önler.
Üçüncü madde başka bir saldırı türüne karşı korur.
Üçü birlikte temel bir taban oluşturur.
Kimliği Adreste Taşımamak
- Adres çubuğunda görünür.
- Kopyalanıp paylaşılabilir.
- Günlüklere yazılır.
İkinci madde en sık yaşanan sızıntı biçimidir: oturum kimliği adreste taşınıyorsa, kullanıcının arkadaşına gönderdiği bir bağlantı aslında hesabına erişim hediye etmek demektir — üstelik kimse bunun farkında olmaz.
Adresler ayrıca sunucu günlüklerine yazılır.
Üçüncü madde bu nedenle önemlidir.
Oturum kimliği yalnızca çerezde taşınmalıdır.
Oturum Süresi
| Site türü | Uygun süre |
|---|---|
| Bankacılık benzeri | Çok kısa |
| Yönetim paneli | Kısa |
| İçerik sitesi | Uzun olabilir |
İkinci satır önemli bir ayrımı gösterir: yönetim paneline erişen oturumlar kısa tutulmalıdır çünkü ortak kullanılan bir bilgisayarda açık kalan yönetici oturumu, tüm siteyi riske atar.
Hareketsizlik süresi ayrıca tanımlanmalıdır.
Toplam süre ile hareketsizlik süresi farklı kavramlardır.
İkisi de sınırlanmalıdır.
Beni Hatırla
- Ayrı bir kalıcı belirteç kullanılır.
- Oturum kimliğinden bağımsızdır.
- Kullanıldığında yenilenir.
Üçüncü madde çalınmayı tespit etmeyi sağlar: kalıcı belirteci her kullanımda yenilemek, çalınmış bir belirtecin ikinci kez kullanılmaya çalışıldığında fark edilmesini sağlar — bu durumda tüm oturumlar kapatılır.
Bu, sessiz hesap ele geçirmelerini yakalar.
Birinci madde ise oturum süresini uzatmaktan daha güvenlidir.
Kalıcı belirteç hassas işlemlerde yeterli sayılmamalıdır.
Çıkış İşlemi
- Sunucudaki oturum silinmeli.
- Çerez de temizlenmeli.
- Kalıcı belirteç iptal edilmeli.
Birinci madde çok sık eksik yapılır: yalnızca çerezi silmek çıkış yapmak değildir — sunucudaki oturum kaydı duruyorsa, çerez değerini bir yerden ele geçiren biri hâlâ o oturumu kullanabilir.
Çıkış, sunucu tarafında da gerçekleşmelidir.
Üçüncü madde ise kalıcı girişi sonlandırır.
Aksi hâlde kullanıcı çıkış yaptığını sanır ama bir sonraki ziyarette otomatik girer.
Oturum ayarlarını ve çerez politikalarını yapılandırabilmek sunucu erişimi gerektirir; web hosting hizmeti ile güvenlik ayarlarınızı kendiniz düzenleyebilirsiniz.
Sonuç
Oturum güvenliğinin en kritik anı giriş anıdır: giriş sırasında oturum kimliği yenilenmezse, giriş öncesi geçerli olan kimlik giriş sonrası da geçerli kalır. Yenileyin ve eskisini geçersiz kılın. Çerezi betiklere kapatın, kimliği asla adreste taşımayın — paylaşılan bir bağlantı hesaba erişim hediye etmek demektir — ve çıkışta sunucudaki oturumu da silin.
Sıkça Sorulan Sorular (SSS)
Girişte oturum kimliği neden yenilenmeli?
Yenilenmezse giriş öncesi geçerli olan kimlik giriş sonrası da geçerli kalır ve o kimliği bilen herkes oturum açmış kullanıcı olur. Saldırganın şifreyi bilmesine gerek yoktur, kimliği önceden belirlemesi yeterlidir.
Her istekte yenilesem daha güvenli olmaz mı?
Olmaz, sorun çıkarır. Her istekte yenilemek paralel isteklerde yarış koşulu üretir ve kullanıcı rastgele çıkış yapmış gibi görünür; teşhisi çok zor bir şikayet doğar. Girişte, yetki yükselmesinde ve şifre değişiminde yenilemek yeterlidir.
En önemli çerez ayarı hangisi?
Oturum çerezini betiklerin okumasına kapatmak. Bu, sitenizde bir betik açığı bulunsa bile oturum bilgisinin çalınmasını engeller; tek satırlıktır ve hiçbir maliyeti yoktur. Yanına şifreli bağlantı zorunluluğunu da ekleyin.
Çıkışta çerezi silmek yeterli mi?
Yeterli değil. Sunucudaki oturum kaydı duruyorsa, çerez değerini bir yerden ele geçiren biri hâlâ o oturumu kullanabilir. Çıkışta sunucudaki oturumu silin ve kalıcı giriş belirtecini de iptal edin.