Web Uygulamalarında Güvenli Oturum Yönetimi Rehberi
Sibertim · Web Güvenliği · Oturum Yönetimi

Web Uygulamalarında Güvenli Oturum Yönetimi

Günümüz modern yazılım dünyasında kullanıcı doğrulamak hayati bir adımdır. Ancak kimlik verilerini oturum süresince korumak çok daha kritik bir süreçtir. Bu doğrultuda web uygulamalarında güvenli oturum yönetimi ilkeleri, yetkisiz erişimleri doğrudan engeller. Ayrıca kurumların kritik verilerini güvenle muhafaza eder.

Çünkü geliştiriciler sağlam oturum mimarileri kurmadığında ciddi zafiyetler doğar. Nitekim saldırganlar oturum ele geçirme teknikleriyle hesapları kontrol edebilir. Bu nedenle şirketlerin güvenli çerez yapılandırmalarını uygulaması şarttır. Hatta modern token standartlarını sisteme entegre etmek gereklidir.

Hızlı Özet

Yazılımcılar oturum anahtarlarını yüksek karmaşıklık sunan rastgele üreteçlerle hazırlamalıdır. Ayrıca çerezlerde HttpOnly, Secure ve SameSite özniteliklerini aktif tutmak gerekir. Bu sayede veri sızıntıları engellenir. Bunun yanı sıra JWT imza kontrollerini sunucu tarafında doğrulamak zorunludur.

Cookie Security JWT Analysis Session Hijacking OWASP Standards
Not: Zayıf yapılandırılmış oturum mekanizmaları, en karmaşık parola politikalarını bile tamamen hükümsüz kılar.

Oturum Yönetimi Prensipleri

HTTP protokolü yapısı gereği durumsuz bir iletişim modeli sunar. Bu yüzden sunucular her isteği oturum kimliği bilgisiyle eşleştirir. Nitekim web uygulamalarında güvenli oturum yönetimi ilkelerini uygulamak büyük önem taşır. Bu sayede kullanıcı giriş yaptıktan sonraki süreç koruma altına alınır.

Web Uygulamalarında Güvenli Oturum Yönetimi Mimarisi

Örneğin oturum kimlikleri tahmin edilebilir olursa ciddi riskler doğar. Kötü niyetli kişiler başka kullanıcıların oturumlarını kolayca taklit edebilir. Bu doğrultuda yazılımcıların kriptografik rastgele sayı üreteçlerini kullanması gerekir. Örneğin sıralı diziler yerine en az 128 bit karmaşık metinler seçilmelidir.

Ayrıca geliştiriciler oturum kimliklerini URL parametrelerinde taşımamalıdır. Çünkü tarayıcı geçmişi bu hassas verileri kolayca saklayabilir. Sonuç olarak oturum verileri yetkisiz kişilerin eline geçebilir. Bu yüzden oturum bilgileri yalnızca güvenli çerezlerle iletilmelidir.

Bununla birlikte oturum zaman aşımı sürelerini doğru kurgulamak gerekir. Örneğin bankacılık uygulamaları eylemsizlik süresini kısa tutar. E-ticaret siteleri ise bu süreyi biraz daha esnek belirler. Ancak kullanıcı çıkış yaptığında sunucu oturum kaydını derhal silmelidir.

Zaman Aşımı ve Veritabanı Güvenliği

Ayrıca eylemsizlik zaman aşımı kadar mutlak zaman aşımı da önemlidir. Çünkü kullanıcı aktif olsa bile oturumu belli bir süre sonra yenilemek gerekir. Örneğin finans uygulamaları sekiz saatin sonunda kullanıcıyı otomatik olarak sistemden çıkarır. Bu yöntem yetkisiz kişilerin açık kalan sekmeleri ele geçirmesini engeller.

Nitekim oturum verilerini depolamak için kullanılan sunucu altyapılarını da korumak gerekir. Örneğin In-Memory veritabanı çözümleri olan Redis veya Memcached tercih edebilirsiniz. Bununla birlikte, söz konusu veri depolarına yalnızca yetkili servislerin ulaşabilmesi adına erişim izinlerini en dar kapsamda tutmalısınız. Dolayısıyla yetkisiz kişilerin oturum depolarına sızmasını imkansız hale getirirsiniz.

Öte yandan eşzamanlı oturum kontrolleri de güvenlik standartlarını yükseltir. Örneğin aynı kullanıcının farklı cihazlardan aynı anda girmesini engelleyebilirsiniz. Bu sayede hesabın çalındığı durumlarda saldırganın erişimi anında sınırlandırılır. Bu doğrultuda sistem kullanıcılara aktif cihaz listesini de sunmalıdır.

Önemli Kural: Başarılı bir giriş işleminden hemen sonra mevcut oturum kimliğini imha etmek zorunludur.

Güvenli Çerez Yönetimi

Geliştiriciler oturum verilerini istemci tarafında tutmak için çerezleri tercih eder. Ancak çerezleri doğru yapılandırmazsanız güvenlik riskleri meydana gelir. Örneğin siteler arası betik çalıştırma zararları ortaya çıkabilir. Bu sebeple çerez özniteliklerini standartlara uygun belirlemek şarttır.

Özellikle HttpOnly, Secure ve SameSite bayrakları temel koruma sağlar. Örneğin HttpOnly bayrağı eklendiğinde JavaScript kodları çerezlere erişemez. Bu sayede XSS saldırılarında çerezlerin çalınmasını engellersiniz. Dolayısıyla kullanıcı verileri güvende kalır.

Bunun yanı sıra Secure bayrağı çerez iletimini HTTPS protokolüne zorlar. Bu yüzden ağ trafiğini izleyen kişiler verileri ele geçiremez. Konuyla ilgili teknik detaylara OWASP Top 10 rehberinden ulaşabilirsiniz.

SameSite ve Gelişmiş Çerez Yapılandırmaları

Ayrıca SameSite özniteliği harici isteklerde çerezin davranışını belirler. Dolayısıyla çerez yapılandırması sırasında SameSite özniteliğini uygulamanın ihtiyacına uygun şekilde Lax veya Strict moduna getirmek şarttır. Böylece CSRF saldırılarını engellersiniz. Güvenlik standartlarını incelemek için NIST Güvenlik Standartları belgelerine bakabilirsiniz.

Çerez Bayrağı Varsayılan Durum Güvenlik İşlevi Önerilen Yapılandırma
HttpOnly Kapalı JavaScript üzerinden çerez erişimini engeller. Etkin (True)
Secure Kapalı İletimi sadece HTTPS protokolüne zorunlu kılar. Etkin (True)
SameSite Unset / None Siteler arası isteklerde çerez gönderimini kısıtlar. Lax veya Strict
Domain & Path Geniş Kapsam Çerezin geçerli olduğu alan adını ve dizini daraltır. En Dar Kapsam

Ayrıca çerez domain ve path sınırlarını dar tutmak gerekir. Çünkü geniş tanımlanan domain ayarları risk oluşturur. Örneğin alt alan adlarındaki bir açık ana uygulamayı etkileyebilir.

Nitekim çerez ömrünü belirleyen Max-Age ve Expires öznitelikleri de kritiktir. Geçici işlemler için oturum çerezleri (session cookies) kullanmalısınız. Fakat kalıcı çerezler tercih edecekseniz süreyi kısa tutmalısınız. Bu sayede eski çerezlerin sonradan kötüye kullanımını önlersiniz.

Öte yandan modern tarayıcılar Cookie Prefixes yapılandırmalarını destekler. Örneğin çerez isminin başına __Host- veya __Secure- ekleyebilirsiniz. Bu yöntem çerezlerin izinsiz değiştirilmesini ve güvensiz bağlantılardan gönderilmesini engeller. Dolayısıyla gelişmiş tarayıcı korumaları aktif hale gelir.

Bu nedenle geliştirici ekipleri çerez oluşturma kodlarını düzenli olarak gözden geçirmelidir. Hatta çerezlerin güvenlik durumunu otomatize test araçlarıyla sürekli taramak faydalıdır. Sonuç olarak hatasız bir çerez politikası sistem bütünlüğünü doğrudan korur.

JWT ve Oturum Güvenliği

Modern mikroservis yapılarında JSON Web Token kullanımı oldukça yaygındır. Ancak web uygulamalarında güvenli oturum yönetimi kurgulanırken hatalar yapılabilir. Yanlış yapılandırılan JWT mimarileri ciddi güvenlik açıklarına sebep olur.

JWT ile Web Uygulamalarında Güvenli Oturum Yönetimi

Nitekim bir JSON Web Token (JWT); başlık (Header), veri (Payload) ve imza (Signature) olmak üzere üç temel bileşeni bünyesinde barındırır. Fakat bu token bilgisi Base64URL formatında kodlanır. Dolayısıyla istemci tarafında herkes bu içeriği kolayca okuyabilir. Bu yüzden payload içerisine hassas kişisel veriler eklememelisiniz.

Öte yandan sunucu gelen token bilgilerini dikkatle kontrol etmelidir. Çünkü “none” algoritması manipülasyonları imza adımını devre dışı bırakabilir. Bu durumu önlemek adına sunucu sadece güvenli algoritmaları kabul etmelidir. Örneğin RS256 algoritmasını tercih edebilirsiniz.

Bununla birlikte erişim token sürelerini kısa tutmak gerekir. Ayrıca yenileme token’ları ile sistemi desteklemelisiniz. Nitekim şüpheli bir durumda yenileme token’ını derhal iptal etmelisiniz. Böylece olası veri sızıntılarının önüne geçersiniz.

Sonuç olarak token’ları localStorage alanında saklamak XSS riski yaratır. Bu nedenle JWT verilerini HttpOnly çerezlerde tutmak en doğru yoldur.

JWT İmza Doğrulama ve Karaliste Yönetimi

Ayrıca JWT imza doğrulamasında gizli anahtarların yönetimi kritik bir konudur. Örneğin simetrik HS256 algoritmasında gizli anahtar uzun ve karmaşık olmalıdır. Aksi halde saldırganlar kaba kuvvet (brute-force) yöntemleriyle anahtarı çözebilir. Dolayısıyla asimetrik RS256 kullanımı çok daha güvenli bir seçenektir.

Nitekim JWT karaliste (blacklisting) mekanizması kurmak da önemlidir. Çünkü varsayılan JWT yapısı durumsuzdur ve süresi bitene kadar geçerlidir. Fakat bir kullanıcının hesabını askıya aldığınızda token derhal geçersiz kılınmalıdır. Bu yüzden sunucu tarafında aktif iptal listeleri tutmalısınız.

Öte yandan token yenileme (token rotation) süreçlerini de tasarlamalısınız. Örneğin her yenileme token’ı kullanıldığında eskisini silip yenisini vermelisiniz. Bu yöntem eski yenileme token’larının tekrar kullanılmasını engeller. Bu doğrultuda yetkisiz erişim riskini en aza indirirsiniz.

Bu sebeple mikroservisler arası iletişimde JWT doğrulama yükünü dengeli dağıtmalısınız. Ayrıca API Gateway seviyesinde token doğrulaması yapmak sistem performansını korur. Sonuç olarak merkezi güvenlik denetimi sağlamak mimariyi daha dayanıklı kılar.

Oturum Saldırıları ve Önlemler

Oturum yönetimine yönelik saldırılar yetkilendirme katmanını hedef alır. Sektörde en sık görülen yöntemler oturum çalma ve oturum sabitlemedir. Ayrıca CSRF saldırıları da yaygın tehditler arasında yer alır.

Örneğin Oturum Sabitleme saldırısında saldırgan kurbana bir oturum ID kabul ettirir. Kurban giriş yaptığında aynı ID aktif kalırsa hesap ele geçer. Bu tehdidi engellemek için giriş sonrası oturum ID değiştirilmelidir.

Öte yandan Oturum Çalma saldırıları ağ dinleme ile gerçekleşir. Güvenli olmayan bağlantılar bu saldırılara zemin hazırlar. Bu yüzden tüm iletişimi TLS/SSL ile şifrelemelisiniz.

Oturum Sabitleme (Session Fixation)

Saldırgan belirlediği oturum ID bilgisini kurbana kullandırır. Kullanıcı sisteme girdiğinde ID değişmezse hesap doğrudan ele geçer.

Önlem: Login Sonrası ID Yenileme

Oturum Çalma (Session Hijacking)

Ağ dinleme veya XSS zafiyetiyle aktif oturum çerezini çalma olayıdır. Saldırgan kullanıcı yetkisiyle hareket eder.

Önlem: HTTPS + HttpOnly

Gelişmiş Saldırı Türleri ve Korunma Yöntemleri

Ayrıca form işlemlerinde anti-CSRF token mekanizmaları kullanılmalıdır. Böylece kullanıcının haberi olmadan çalışan istekleri engellersiniz. Dolayısıyla sistem güvenliği korunur.

Bununla birlikte IP adresi veya tarayıcı bilgisi değiştiğinde oturum sorgulanmalıdır. Şüpheli durumlarda oturumu kapatmalısınız. Nitekim kullanıcıdan tekrar giriş yapmasını istemelisiniz.

Nitekim Kaba Kuvvet (Brute Force) saldırılarına karşı da önlem almalısınız. Örneğin oturum id tahmin denemelerini engellemek için Rate Limiting uygulamalısınız. Kısa sürede çok sayıda hatalı istek atan IP adreslerini engellemek gerekir. Böylece otomatik araçlarla yapılan taramalar etkisiz kalır.

HSTS ve CSP ile Çok Katmanlı Koruma

Öte yandan Ortadaki Adam (Man-in-the-Middle) saldırıları oturum verilerini hedefler. Bu saldırıları önlemek adına HSTS (HTTP Strict Transport Security) başlığını aktifleştirmelisiniz. HSTS sayesinde tarayıcılar sistemle yalnızca güvenli HTTPS üzerinden iletişim kurar. Dolayısıyla HTTP’ye düşürme (downgrade) saldırılarını engellersiniz.

Ayrıca Cross-Site Scripting (XSS) zafiyetlerini engellemek için Content Security Policy (CSP) kullanmalısınız. Güçlü bir CSP politikası zararlı betiklerin çalışmasını engeller. Bu sayede oturum verilerine erişmeye çalışan zararlı kodlar pasifize edilir. Sonuç olarak çok katmanlı savunma anlayışı tam koruma sağlar.

Bu nedenle güvenlik ekipleri oturum mekanizmalarını sürekli test etmelidir. Hatta kod değişikliklerinde otomatik güvenlik taramaları çalıştırmalısınız. Böylece yeni eklenen özelliklerin güvenlik açıklarına yol açmasını önlersiniz.

Sibertim Güvenlik Hizmetleri

Siber güvenlik alanında uzman olan Sibertim, web yazılımlarındaki açıkları tespit eder. Alanında deneyimli ekibimiz, web uygulamalarında güvenli oturum yönetimi kurgularını detaylıca analiz eder. Bu doğrultuda gerçekleştirdiğimiz güvenlik testlerinde OWASP ile NIST tarafından belirlenen küresel standartları temel alıyoruz.

Sızma testlerimizde çerez yapılandırmaları ve token mekanizmaları sınanır. Firmamıza özel raporlar ile alınması gereken tedbirler sunulur. Bu sayede kaynak kod seviyesinde iyileştirmeler yapabilirsiniz.

Bunun yanı sıra güvenli yazılım geliştirme süreçlerinize rehberlik ediyoruz. Ayrıca ekiplerinize yönelik teknik eğitimler düzenliyoruz. Sistemlerinizi korumak için sızma testi hizmetlerimizden faydalanabilirsiniz.

Derinlemesine Sızma Testi ve Danışmanlık

Kurumsal altyapınızı güçlendirmek adına bizimle iletişime geçebilirsiniz. Detaylı bilgi almak için Sibertim Sızma Testi Hizmetleri sayfamızı inceleyebilirsiniz.

Nitekim sunduğumuz sızma testi hizmetleri yalnızca yüzeysel taramalardan ibaret değildir. Uzmanlarımız karmaşık iş mantığı (business logic) hatalarını manuel yöntemlerle tespit eder. Örneğin oturum zaman aşımları ve token yenileme mekanizmalarını derinlemesine analiz ediyoruz. Dolayısıyla otomatize taranan araçların gözden kaçırdığı tüm riskleri ortaya çıkarıyoruz.

Ayrıca test süreçlerinin ardından kapsamlı ve anlaşılır raporlar hazırlıyoruz. Bu raporlarda tespit edilen zafiyetlerin etki dereceleri ve çözüm önerileri açıkça yer alır. Böylece yazılım ekibiniz zafiyetleri hızlıca kapatma olanağı bulur. Bu doğrultuda kurumsal prestijiniz ve veri güvenliğiniz teminat altına alınır.

Öte yandan sürekli güvenlik danışmanlığı modelimiz ile sistemlerinizi her zaman güncel tutuyoruz. Yeni çıkan tehdit türlerine ve sıfırıncı gün (Zero-Day) zafiyetlerine karşı anında önlem alıyoruz. Bu sayede şirketiniz siber saldırılara karşı daima hazırlıklı olur.

Sık Sorulan Sorular

Web uygulamalarında ideal oturum zaman aşımı süresi ne kadardır?

Finansal sistemlerde eylemsizlik süresi 5-15 dakika ile sınırlandırılır. Ancak standart platformlarda 30-60 dakika arası süre seçilir.

HttpOnly bayrağı XSS saldırılarını engeller mi?

HttpOnly bayrağı JavaScript’in çereze erişimini engeller. Fakat XSS zafiyetini kapatmaz. Yalnızca çerez çalınmasını önler.

JWT bilgilerini localStorage alanında saklamak güvenli midir?

LocalStorage alanı istemci tarafındaki kodlara açıktır. Bu nedenle JWT bilgileri XSS saldırılarında çalınabilir. En güvenli yol HttpOnly çerez kullanmaktır.

Oturum Sabitleme saldırısı nasıl önlenir?

Kullanıcı giriş yaptığı an mevcut oturum ID imha edilmelidir. Ayrıca kullanıcıya yepyeni bir oturum ID tanımlanmalıdır.

SameSite Strict ve Lax arasındaki fark nedir?

Strict modunda çerezler harici isteklere eklenmez. Lax modunda ise güvenli yönlendirmelerde çerez iletimine izin verilir.

Oturum Yönetimi Çerez Güvenliği JWT Web Güvenliği OWASP Sızma Testi

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir