COMPUTER ENGINEER

Örneklere git
Blog
Next.js / ASP.NET Core / SQL6 dk çalışma
22/ 41

Kimlik ve güvenlik

Çerez tabanlı oturum ve güvenli çerez nitelikleri

HttpOnly, Secure ve SameSite: üç nitelik, üç farklı saldırıya karşı koruma.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Oturum bilgisi bir çerezde taşındığında tarayıcı onu ilgili siteye yapılan her isteğe otomatik ekler. Bu kolaylık doğru niteliklerle korunmalıdır. HttpOnly, çerezin JavaScript tarafından okunmasını engeller; sayfada bir XSS açığı olsa bile oturum çerezi document.cookie ile çalınamaz. Secure, çerezin yalnız HTTPS üzerinden gönderilmesini sağlar.

SameSite, çerezin başka bir siteden başlatılan isteklere eklenip eklenmeyeceğini belirler. Strict, yalnız aynı siteden gelen isteklerde gönderir; Lax, üst düzey gezinmelere (bir bağlantıya tıklamak) izin verir ama başka siteden gelen POST isteklerinde göndermez. Bu, CSRF saldırılarına karşı önemli bir katmandır.

Bu projenin yönetim paneli de bu yaklaşımı kullanır: API’nin ürettiği token tarayıcıdaki JavaScript’e hiç verilmez; Next.js onu HttpOnly, Secure ve SameSite=Strict bir çereze yazar. Simülatördeki ‘Giriş yap’ senaryosu bu akışı adım adım gösterir.

NERESİNDE KULLANIRSIN?

Oturum çerezi, kullanıcının kimliğidir; çalınması hesabın ele geçirilmesi demektir.

SIK YAPILAN HATA

Token’ı localStorage’da saklamak; sayfadaki herhangi bir XSS açığı onu okuyabilir.

CANLI ANİMASYON

Bir mektubun şehirdeki yolculuğu

İsteği bir mektup, sunucuyu bir şehir gibi düşün. Senaryo seç, oynat ve mektubun hangi kapıdan geçip nerede durdurulduğunu izle.

İSTEMCİKENARWEB SUNUCUSUAPI · ASP.NET COREVERİTarayıcıKullanıcının ekranıAğDNS · TCP · TLSTers vekilTLS sonlandırma, sıkıştırmaNext.js sunucusuSSR ve route handlerKestrelHTTP sunucusuHata yakalayıcıMiddlewareRoutingEndpoint seçimiHız sınırıMiddlewareKimlik doğrulamaKim olduğunYetkilendirmeNeye izin varModel bindingHTTP → C# + doğrulamaControllerEndpoint koduServisİş kuralları (DI)RedisDağıtık önbellekEF CoreLINQ → SQLSQL ServerSorgu planı, indeks
GİDİŞ →

Giriş formunu gönderdin. Parolan şifreli tünelin içinde gidiyor, adres çubuğunda görünmüyor.

TarayıcıSenin ekranın. İsteği yazan ve sonunda cevabı sayfaya çeviren yer.
1 / 12
01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
Set-Cookie: admin_session=eyJ…; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=1800

Üç güvenlik niteliği ve kısa ömürlü bir oturum.

Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.

02 / SIRA SENDE

Önce kendin dene.

Bir SPA, JWT’yi localStorage’da tutuyor ve her isteğe Authorization başlığıyla ekliyor. Sayfaya üçüncü taraf bir yorum eklentisi ekleniyor. Risk nedir ve nasıl azaltılır?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
Eklentideki veya sayfadaki herhangi bir XSS, localStorage’daki token’ı okuyup dışarı gönderebilir.
Azaltma: token’ı HttpOnly + Secure + SameSite çerezde tutmak (BFF deseni),
kısa ömür, sıkı Content-Security-Policy ve çıktı kodlama.

JavaScript’in erişebildiği her depo, aynı sayfada çalışan her kodun erişebildiği depodur.