WEB / WEB-13.01
Session identifier ve browser taşıması
Browser’ın taşıdığı küçük handle’ın server’da doğrulanmış identity’ye nasıl bağlandığını creation ve lookup adımlarında incele.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Tanınan handle
- Sonraki request hazırlanıyor
Browser bu case için sid-duru-fixture girdisini taşır. sid-duru-fixture bir öğretim alias’ıdır; görünümünden subject veya tenant çıkarılmaz. Request henüz Application’a ulaşmadı.
- Browser · cookie jar
- sid-duru-fixture
- Application · session resolver
- Request alınmadı
- Aynı process · trusted record
- Active record: Duru / Atlas
- Session request’i ulaştı
Application request’i aldı. Cookie’nin bulunması yalnız taşıyıcı girdisini sağlar; Browser sonucu bekler. Trusted record aynı application process’inin mantıksal bileşenidir.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Handle alındı; lookup bekliyor
- Aynı process · trusted record
- Active record: Duru / Atlas
- Trusted record değerlendirildi
Tanınan handle mevcut active record’a bağlanır. Duru ve Atlas server record’undan çözülür; alias’ın metninden veya client role iddiasından değil.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Accepted: Duru / Atlas
- Aynı process · trusted record
- Active record: Duru / Atlas
- Resource sınırı ayrı kaldı
Session tanınsa da belirli bir kitap için object/action izni bu derste değerlendirilmez. Trusted subject kurulamazsa authenticated resource processing ilerlemez; korumalı body üretilmez.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Session accepted; resource policy gerekli
- Aynı process · trusted record
- Active record: Duru / Atlas
- Check sonucu hazırlandı
Application accepted / trusted_active_record sonucunu hazırlar. Browser bu sonucu henüz almadı. SessionRef yalnız correlation içindir; raw handle response örneğinde veya genel log’da gösterilmez.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Response hazır: trusted_active_record
- Aynı process · trusted record
- Active record: Duru / Atlas
- Session sonucu Browser’a ulaştı
Browser yalnız şimdi session check sonucunu bilir. Bu response kitap body’si, resource grant’i, password/MFA doğrulaması veya identifier entropy ölçümü eklemez.
- Browser · cookie jar
- Session accepted; resource izni ayrı
- Application · session resolver
- Response hazır: trusted_active_record
- Aynı process · trusted record
- Active record: Duru / Atlas
Handle yok
- Sonraki request hazırlanıyor
Bu case’te Browser request’i Cookie handle taşımadan hazırlar. Application request’i henüz almadı; mevcut Duru/Atlas record’u, handle bulunmayan bu request için authenticated subject oluşturmaz.
- Browser · cookie jar
- Cookie yok
- Application · session resolver
- Request alınmadı
- Aynı process · trusted record
- Active record: Duru / Atlas
- Session request’i ulaştı
Application request’i aldı. Cookie’nin bulunması yalnız taşıyıcı girdisini sağlar; Browser sonucu bekler. Trusted record aynı application process’inin mantıksal bileşenidir.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Cookie yok; lookup beklenmiyor
- Aynı process · trusted record
- Active record: Duru / Atlas
- Trusted record değerlendirildi
Handle bulunmadığından lookup yapılmaz. Subject, tenant ve sessionRef null kalır; client iddiasından yeni authenticated record oluşturulmaz.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Rejected: no_handle; subject=null
- Aynı process · trusted record
- Active record: Duru / Atlas
- Resource sınırı ayrı kaldı
Session tanınsa da belirli bir kitap için object/action izni bu derste değerlendirilmez. Trusted subject kurulamazsa authenticated resource processing ilerlemez; korumalı body üretilmez.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Authenticated processing durdu
- Aynı process · trusted record
- Active record: Duru / Atlas
- Check sonucu hazırlandı
Application rejected / no_handle sonucunu hazırlar. Browser bu sonucu henüz almadı. SessionRef yalnız correlation içindir; raw handle response örneğinde veya genel log’da gösterilmez.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Response hazır: no_handle
- Aynı process · trusted record
- Active record: Duru / Atlas
- Session sonucu Browser’a ulaştı
Browser yalnız şimdi session check sonucunu bilir. Bu response kitap body’si, resource grant’i, password/MFA doğrulaması veya identifier entropy ölçümü eklemez.
- Browser · cookie jar
- Session rejected; subject=null
- Application · session resolver
- Response hazır: no_handle
- Aynı process · trusted record
- Active record: Duru / Atlas
Bilinmeyen handle
- Sonraki request hazırlanıyor
Browser bu case için unknown-fixture-label girdisini taşır. sid-duru-fixture bir öğretim alias’ıdır; görünümünden subject veya tenant çıkarılmaz. Request henüz Application’a ulaşmadı.
- Browser · cookie jar
- unknown-fixture-label
- Application · session resolver
- Request alınmadı
- Aynı process · trusted record
- Active record: Duru / Atlas
- Session request’i ulaştı
Application request’i aldı. Cookie’nin bulunması yalnız taşıyıcı girdisini sağlar; Browser sonucu bekler. Trusted record aynı application process’inin mantıksal bileşenidir.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Handle alındı; lookup bekliyor
- Aynı process · trusted record
- Active record: Duru / Atlas
- Trusted record değerlendirildi
Lookup not_found döndürür. Mevcut Duru kaydı unknown alias’a bağlanmaz; subject, tenant ve sessionRef null kalır, yeni record oluşturulmaz.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Rejected: no_trusted_record; subject=null
- Aynı process · trusted record
- Active record: Duru / Atlas
- Resource sınırı ayrı kaldı
Session tanınsa da belirli bir kitap için object/action izni bu derste değerlendirilmez. Trusted subject kurulamazsa authenticated resource processing ilerlemez; korumalı body üretilmez.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Authenticated processing durdu
- Aynı process · trusted record
- Active record: Duru / Atlas
- Check sonucu hazırlandı
Application rejected / no_trusted_record sonucunu hazırlar. Browser bu sonucu henüz almadı. SessionRef yalnız correlation içindir; raw handle response örneğinde veya genel log’da gösterilmez.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Response hazır: no_trusted_record
- Aynı process · trusted record
- Active record: Duru / Atlas
- Session sonucu Browser’a ulaştı
Browser yalnız şimdi session check sonucunu bilir. Bu response kitap body’si, resource grant’i, password/MFA doğrulaması veya identifier entropy ölçümü eklemez.
- Browser · cookie jar
- Session rejected; subject=null
- Application · session resolver
- Response hazır: no_trusted_record
- Aynı process · trusted record
- Active record: Duru / Atlas
Oluşturma izi
- Identity önkoşulu sağlandı
creationTrace seq=1 için identityVerified=true, Duru/Atlas önkoşulu verilmiştir. Burada gerçek password veya MFA kontrolü çalıştırılmaz; Browser’da henüz yeni handle yoktur.
- Browser · cookie jar
- Yeni handle yok
- Application · session resolver
- Verified identity verilmiş
- Aynı process · trusted record
- Yeni binding yok
- Server binding oluşturuldu
Seq=2 record_created, ledger-duru kaydını Duru/Atlas context’ine bağlar. Application ve record aynı process’in mantıksal bileşenleridir; local creation ağ mesajı değildir.
- Browser · cookie jar
- Yeni handle yok
- Application · session resolver
- Set-Cookie hazırlanabilir
- Aynı process · trusted record
- ledger-duru: Duru / Atlas; active
- Set-Cookie talimatı hazırlandı
Application örnekteki __Host-hd_session header’ını hazırlar. Seq=3 gönderim snapshot’ında browserHasNewHandle=false kalır; server binding Browser’a otomatik kopyalanmaz.
- Browser · cookie jar
- Yeni handle yok
- Application · session resolver
- Set-Cookie hazır; receipt yok
- Aynı process · trusted record
- ledger-duru: Duru / Atlas; active
- Cookie response’u Browser’da
Header Browser’a ulaştı. Bu seçilmiş örnekte Browser cookie policy’si kaydı kabul eder; seq=4 cookie_arrived, browserHasNewHandle=true olur. HttpOnly nedeniyle frontend header okuması veya script erişimi gerekmiyor.
- Browser · cookie jar
- Yeni handle jar’da; identity cookie’de değil
- Application · session resolver
- Instruction gönderildi
- Aynı process · trusted record
- ledger-duru: Duru / Atlas; active
- Sonraki Cookie request’i hazır
İzinli aynı-origin bağlamda Browser yeni handle’ı sonraki Cookie request’ine seçer. Bu seçim lifetime, scope ve Browser policy’ye bağlıdır; resource permission üretmez.
- Browser · cookie jar
- Cookie girdisi hazır
- Application · session resolver
- Sonraki request alınmadı
- Aynı process · trusted record
- ledger-duru: Duru / Atlas; active
- Sonraki request Application’da
Cookie girdisi Application’a ulaştı; Browser check sonucunu bekler. Handle taşıması trusted subject’i kendiliğinden kurmaz; server lookup gerekir.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Lookup bekliyor
- Aynı process · trusted record
- ledger-duru: Duru / Atlas; active
- Subject server kaydından çözüldü
Active record Duru/Atlas subject’ini sağlar. Check sonucu hazırlanabilir; kitap için object/action policy ayrıca gerekir. Browser bu sonucu henüz öğrenmedi.
- Browser · cookie jar
- Check sonucu bekleniyor
- Application · session resolver
- Accepted check response hazır
- Aynı process · trusted record
- ledger-duru: Duru / Atlas; active
- Binding sonucu Browser’da
Browser accepted session check sonucunu aldı. Bu trace creation, cookie receipt ve lookup’ı ayrı gösterir; hiçbir aşama kendi başına kitap resource izni veya gerçek credential doğrulaması kanıtı değildir.
- Browser · cookie jar
- Session accepted; resource policy ayrı
- Application · session resolver
- Accepted check response hazır
- Aynı process · trusted record
- ledger-duru: Duru / Atlas; active
ROLLER · STATE · VERİ AKIŞI
Login sonraki request’e nasıl bağlanır?
Duru Atlas kitaplığına login olur ve sonra başka bir kitap sayfası açar. İkinci request’in authenticated subject’i nereden gelecektir? Her sayfanın yalnız “Duru” metni göndermesi identity kanıtı değildir. Application, daha önce doğruladığı identity ile sonraki request arasında kontrollü bir bağ kurar.
Bu ders opaque server-side session modelini kullanır. Browser küçük bir handle taşır; server kaydı handle’ın hangi identity’ye, hangi authentication state’ine ve hangi lifecycle’a ait olduğunu tutar. Session bu bağın yönetilen ömrüdür. Cookie ise seçtiğimiz taşıma mekanizmasıdır; cookie ve session aynı nesne değildir.
Identifier identity’nin kendisi değil, kayda verilen handle’dır
Artifact’te sid-duru-fixture, Duru’nun authenticated kaydına işaret eden bir eğitim etiketidir. Gerçek kullanılabilir credential değildir. Bu etiket “Duru” veya “Atlas” bilgilerini içine kodlamaz. Server store lookup sonucu bu anlamı verir; Browser’ın role veya tenant iddiası tek başına sonucu kurmaz.
Modelde audit sessionRef=ledger-duru farklı bir amaç taşır: event’leri secret olmadan ilişkilendirmek. Application authentication için sessionRef’i kabul etmez. Browser handle, store lookup/verifier temsili ve audit ref’in rollerini ayır; hepsine session ID denmesi bu ayrımı görünmez yapabilir.
Aynı identity birden fazla Browser/device session’ına sahip olabilir. Handle’ın identity’den bağımsız olması generation ve lifetime’ları ayrı yönetmeyi sağlar. Bir kaydın geçerli olması da her kitap resource’una permission vermez; authorization store lookup sonrasındaki ayrı karardır.
Session creation bir güvenli identity sonucundan başlar
Önce application kimliği kendi trusted authentication süreciyle doğrular. Bu fixture’da identityVerified=true olayı verilen önkoşuldur; gerçek password/MFA kontrolü yaptığımız iddiası değildir. Server kendi session mekanizmasıyla handle üretir ve Duru/Atlas context’ini kendi authenticated kaydına bağlar.
Store kaydı hazır olduktan sonra Application Set-Cookie response’unu gönderir. Response arrival’dan önce Browser’da yeni handle yoktur. Browser kaydı kabul edince sonraki uygun request onu Cookie field’ında taşıyabilir. Server creation ve Browser receipt ayrı state changes olarak korunur.
Anonymous state de session ile tutulabilir; fakat anonymous handle’a kimlik authority’si verilmesi ayrı bir transition’dır. Login/privilege değişiminde rotation ve eski generation kabulü WEB-13.03’ün konusudur. Bu ders creation/binding sorusunu lifecycle ayrıntısıyla karıştırmaz.
Entropy: uzunluk tek başına yeterli değildir
Üretim identifier’ı öngörülemez olmalıdır. Uygun framework session üretimi tercih edilir; özel üretim zorunluysa OWASP CSPRNG ile en az 128 bit büyüklük ve uniqueness kontrolünü önerir. Bu sayıyı bütün token türleri için tek universal policy diye sunmuyoruz.
Entropy, string’in kaç karakter göründüğünden farklıdır. Sabit prefix, hesap adı veya sayaç uzunluğa katkı verse de aynı miktarda randomness sağlamaz. Encoding yalnız temsil biçimini değiştirir. Identifier’ın anlamlı user/tenant verisi taşımaması hem bilgi ifşasını hem yanlış authority yorumunu azaltır.
Artifact’teki sabit sid-duru-fixture ve SYNTHETIC_OPAQUE_HANDLE değerleri bilerek random değildir. Bunlardan production entropy, token collision olasılığı veya cryptographic güvenlik sonucu ölçülmez. Derste gerçek credential dağıtmak yerine ownership ve lookup ilişkisini gözlüyoruz.
Browser taşır; script’in identifier’ı okuması gerekmez
Sentetik HTTPS response’u __Host-hd_session=SYNTHETIC_OPAQUE_HANDLE; Path=/; Secure; HttpOnly; SameSite=Lax gösterir. İzinli Browser bu cookie’yi uygun request’e ekler. Application frontend’inin value’yu document.cookie ile okuyup elle header oluşturması bu flow’un gereği değildir.
Cookie inclusion koşulları WEB-12.02’de anlatılır. Aynı-origin fetch’te uygun cookie taşınabilir; cross-origin fetch’te credentials mode ve Browser/SameSite policy ayrı değerlendirilir. HttpOnly handle script’ten görünmez olsa bile uygun request’e eklenebilir. Bu davranışı bütün cross-site request’ler için garanti sayma.
Session handle’ı URL, genel diagnostic log veya paylaşılabilir screenshot içine taşımak credential’ı gereksiz yüzeylere yayar. Öğrenci observation’da raw value yerine cookie name, scope/flag bilgisi ve credential olmayan sessionRef kullanır. Transport tasarımının iyi olması, application’ın value’yu kabul etme kontrolünü kaldırmaz.
Request geldiğinde binding yeniden kontrol edilir
Application request’teki handle’ı tanımlı exchange mekanizmasından alır. Modelde Cookie dışında URL fallback veya serbest client field kabul edilmez. Tanınan handle’ın server kaydı active ve geçerliyse Duru/Atlas context’i authenticated subject olarak çıkar; bir sonraki resource policy buna dayanabilir.
Missing handle branch’inde subject oluşturulmaz. Unknown-handle branch’inde de gelen değere authenticated kayıt uydurulmaz. Bu iki denial benign olabilir: Browser policy kaydı göndermemiş veya daha önceki client state’i store’dan silinmiş olabilir. Reasons farklıdır, ama ikisi de identity kanıtı oluşturmaz.
Gerçek store implementation hash/verifier veya farklı lookup temsili kullanabilir. Çizimde handle→record bağlantısı göstermek raw token’ın database’de aynen tutulduğu iddiası değildir. Store concurrency, TTL ve distributed consistency ayrıntıları WEB-13.02’ye; expiry/logout transitions WEB-13.03’e bağlıdır.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
Tanınan handle
- Handle taşıması hazırlanıyor
Browser bu inert branch için sid-duru-fixture alias’ını taşır. Bu etiket gerçek credential değildir; subject veya tenant bilgisi yalnız metnin görünümünden çıkarılmaz.
- Browser
- sid-duru-fixture hazır
- Session resolver
- Lookup yapılmadı
- Resource gate
- Resource izni yok
- Session check application’da
Normal check application’a ulaştı. Cookie taşıması yalnız girdiyi sağlar; authenticated subject için tanımlı server binding mekanizması gerekir.
- Browser
- Check sonucu bekleniyor
- Session resolver
- Handle alındı; lookup bekliyor
- Resource gate
- Resource izni yok
- Trusted binding çözüldü
Tanınan alias active ledger-duru kaydına çözülür. Subject Duru ve tenant Atlas server record’undan gelir; browser’ın yazdığı isimden değil.
- Browser
- Check sonucu bekleniyor
- Session resolver
- Accepted: Duru / Atlas
- Resource gate
- Resource izni yok
- Resource kararı ayrı tutuldu
Session acceptance Duru/Atlas context’ini kurar, fakat belirli bir kitap action’ı için object authorization sonucu üretmez.
- Browser
- Check sonucu bekleniyor
- Session resolver
- Session accepted
- Resource gate
- Authorization ayrıca gerekir
- Check sonucu hazırlandı
Application accepted / trusted_active_record sonucunu hazırlar. Observation için credential olmayan audit ref kullanılır; raw handle genel log’a kopyalanmaz.
- Browser
- Check sonucu bekleniyor
- Session resolver
- Session check sonucu hazır
- Resource gate
- Object sonucu gösterilmedi
- Binding sonucu browser’da
Browser session’ın kabul edildiği sonucu aldı. Sahne resource body teslimi, gerçek login veya entropy ölçümü eklemez; alias’ın görevi yalnız binding sınırını açıklamaktır.
- Browser
- Session accepted
- Session resolver
- Session check sonucu hazır
- Resource gate
- Resource body kanıtı yok
Tanınmayan handle
- Handle taşıması hazırlanıyor
Browser bu inert branch için unknown-fixture-label alias’ını taşır. Bu etiket gerçek credential değildir; subject veya tenant bilgisi yalnız metnin görünümünden çıkarılmaz.
- Browser
- unknown-fixture-label hazır
- Session resolver
- Lookup yapılmadı
- Resource gate
- Resource izni yok
- Session check application’da
Normal check application’a ulaştı. Cookie taşıması yalnız girdiyi sağlar; authenticated subject için tanımlı server binding mekanizması gerekir.
- Browser
- Check sonucu bekleniyor
- Session resolver
- Handle alındı; lookup bekliyor
- Resource gate
- Resource izni yok
- Session binding bulunamadı
Lookup not_found sonucu verir. Unknown alias için authenticated record oluşturulmaz; subject, tenant ve sessionRef null kalır.
- Browser
- Check sonucu bekleniyor
- Session resolver
- Rejected: no_trusted_record
- Resource gate
- Resource izni yok
- Resource kararı ayrı tutuldu
Trusted subject kurulamadığından authenticated resource processing bu branch’te ilerlemez. Unknown handle sonucu tek başına kötü niyet kanıtı değildir.
- Browser
- Check sonucu bekleniyor
- Session resolver
- Session rejected
- Resource gate
- Authenticated processing durdu
- Check sonucu hazırlandı
Application rejected / no_trusted_record sonucunu hazırlar. Bu branch’te subject, tenant ve sessionRef null kalır; gözlem case=unknown ile tanımlanır. Raw handle genel log’a kopyalanmaz.
- Browser
- Check sonucu bekleniyor
- Session resolver
- Session check sonucu hazır
- Resource gate
- Object sonucu gösterilmedi
- Binding sonucu browser’da
Browser session’ın reddedildiği sonucu aldı. Sahne resource body teslimi, gerçek login veya entropy ölçümü eklemez; alias’ın görevi yalnız binding sınırını açıklamaktır.
- Browser
- Session rejected
- Session resolver
- Session check sonucu hazır
- Resource gate
- Resource body kanıtı yok
VARSAYIM · SINIR · KONTROL
Handle’a authority veren server binding’idir
Normal akışta geçerli handle, server’ın önceden kurduğu authenticated context’e ulaşır. Bozulan varsayım, client’ın yazdığı subject/role veya audit ref’in aynı authority’yi kurabileceğini düşünmektir. Sadece identifier görünümünün düzgün olması authentication kanıtı değildir.
Kontrol, gelen değeri tanımlı session mekanizmasıyla doğrulamak ve subject’i trusted record’dan çıkarmaktır. Etki, o session’ın identity ve permission kapsamıyla sınırlıdır. Bu dersin fixture’ı unknown/missing case’lerini hazır benign selector olarak sunar; gerçek identifier denemeleri veya dış hedef workflow’u oluşturmaz.
Unpredictability ve gizlilik farklı riskleri karşılar
Identifier generation’ın yüksek entropy sağlaması değer ifşa edildiğinde onu sihirli biçimde korumaz. Aynı şekilde HTTPS, zayıf generation’a randomness katmaz. Generation, taşıma, Browser/script erişimi ve log hygiene farklı kontrol yüzeyleridir.
Bir bearer handle’ın ortaya çıkması authenticated işlemlerin riskini artırabilir; ancak action’ın etkisi application policy ve ek doğrulamalara bağlıdır. Kalıcı kontrol yalnız string’i daha uzun yapmak değildir: uygun session mechanism, sınırlı taşıma, store erişimi ve lifecycle invalidation birlikte değerlendirilir. Rotation/expiry ayrıntıları WEB-13.03’tedir.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
Arrival kaydı
- Creation trace kapsamı seçildi
Bu branch creationTrace’in dört kaydını birlikte inceler. Kayıt sayısı, browser’ın neyi öğrenebildiğini değerlendirirken korunur.
- Creation kayıtları
- binding-create: seq 1–4
- Binding incelemesi
- Creation eşleştirilmedi
- Receipt hükmü
- Jar kanıtı bilinmiyor
- Identity önkoşulu ayrıldı
identity_verified olayı bu örnekte verilen trusted önkoşuldur. Seq 1’in bulunması gerçek password veya MFA işleminin bu sahnede çalıştırıldığı anlamına gelmez.
- Creation kayıtları
- binding-create: seq 1–4
- Binding incelemesi
- seq 1: identity_verified
- Receipt hükmü
- Jar kanıtı bilinmiyor
- Store creation ilişkilendirildi
Seq 2 record_created olayı aynı requestId=binding-create ile ledger-duru kaydını ilişkilendirir. Audit sessionRef, browser handle’ı veya authentication credential’ı değildir.
- Creation kayıtları
- binding-create: seq 1–4
- Binding incelemesi
- seq 2: ledger-duru oluşturuldu
- Receipt hükmü
- Jar kanıtı bilinmiyor
- Gönderim receipt sayılmadı
Seq 3 set_cookie_sent sırasında browserHasNewHandle=false’tur. Server instruction göndermiştir; browser’ın kabul ve storage state’i bu olaydan çıkarılmaz.
- Creation kayıtları
- binding-create: seq 1–4
- Binding incelemesi
- seq 3: instruction gönderildi
- Receipt hükmü
- Receipt henüz kanıtlanmadı
- Arrival kapsamı değerlendirildi
Seq 4 cookie_arrived ve browserHasNewHandle=true kaydı vardır. Bu fixture içinde arrival bilinir; sonraki lookup veya resource izni henüz gösterilmiş değildir.
- Creation kayıtları
- binding-create: seq 1–4
- Binding incelemesi
- Creation ve gönderim biliniyor
- Receipt hükmü
- Arrival biliniyor
- Binding kanıtı genişletilmedi
Creation, browser receipt ve accepted lookup ayrı kanıtlardır. Bu trace receipt aşamasını açıklar, fakat daha sonraki protected request’in identity veya object sonucunu tamamlamaz.
- Creation kayıtları
- binding-create: seq 1–4
- Binding incelemesi
- SessionRef yalnız correlation
- Receipt hükmü
- Lookup ayrıca gerekir
Receipt eksik
- Creation trace kapsamı seçildi
Bu branch creationTrace’in yalnız ilk üç kaydını inceler. Kayıt sayısı, browser’ın neyi öğrenebildiğini değerlendirirken korunur.
- Creation kayıtları
- binding-create: seq 1–3 incelemesi
- Binding incelemesi
- Creation eşleştirilmedi
- Receipt hükmü
- Jar kanıtı bilinmiyor
- Identity önkoşulu ayrıldı
identity_verified olayı bu örnekte verilen trusted önkoşuldur. Seq 1’in bulunması gerçek password veya MFA işleminin bu sahnede çalıştırıldığı anlamına gelmez.
- Creation kayıtları
- binding-create: seq 1–3 incelemesi
- Binding incelemesi
- seq 1: identity_verified
- Receipt hükmü
- Jar kanıtı bilinmiyor
- Store creation ilişkilendirildi
Seq 2 record_created olayı aynı requestId=binding-create ile ledger-duru kaydını ilişkilendirir. Audit sessionRef, browser handle’ı veya authentication credential’ı değildir.
- Creation kayıtları
- binding-create: seq 1–3 incelemesi
- Binding incelemesi
- seq 2: ledger-duru oluşturuldu
- Receipt hükmü
- Jar kanıtı bilinmiyor
- Gönderim receipt sayılmadı
Seq 3 set_cookie_sent sırasında browserHasNewHandle=false’tur. Server instruction göndermiştir; browser’ın kabul ve storage state’i bu olaydan çıkarılmaz.
- Creation kayıtları
- binding-create: seq 1–3 incelemesi
- Binding incelemesi
- seq 3: instruction gönderildi
- Receipt hükmü
- Receipt henüz kanıtlanmadı
- Arrival kapsamı değerlendirildi
Bu inceleme yalnız seq 1–3’ü içerdiğinden cookie_arrived kaydı yoktur. Bu, arrival hiç olmadı hükmü değildir; receipt için sunulan kanıt eksiktir.
- Creation kayıtları
- binding-create: seq 1–3 incelemesi
- Binding incelemesi
- Creation ve gönderim biliniyor
- Receipt hükmü
- UNKNOWN: receipt
- Binding kanıtı genişletilmedi
Creation, browser receipt ve accepted lookup ayrı kanıtlardır. Eksik receipt nedeniyle binding başarısız veya başarılı diye tek sonuç verilmez; jar ve check gözlemleri ayrıca istenir.
- Creation kayıtları
- binding-create: seq 1–3 incelemesi
- Binding incelemesi
- SessionRef yalnız correlation
- Receipt hükmü
- UNKNOWN: browser receipt
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
Creation, delivery ve lookup için ayrı evidence
Creation gözlemi server’ın record hazırladığını; Set-Cookie response’u instruction gönderildiğini; jar görünümü Browser storage’ı; protected request kararı lookup sonucunu anlatır. Bunlardan birini görmek diğerlerinin tamamlandığını kendiliğinden kanıtlamaz.
Artifact’te seq, event, sessionRef, requestId, result ve reason application-owned teaching alanlarıdır. Gerçek web framework event adları veya SIEM şeması gibi sunulmaz. identityVerified fixture input’u gerçek credential kontrolünü doğrulamış sayılmaz.
Session value olmadan lookup kararını ilişkilendir
Audit için raw handle yerine ayrı sessionRef kullanılır. Missing veya unknown case’inde subject null kalır; cookie varlığıyla userId üretmek yanlış correlation olur. Benign missing case Browser policy’den, unknown case store/cache lifecycle’ından kaynaklanabilir; sonuç tek başına alarm değildir.
Artifact XML üstünde /sessionObservations/check[@result="accepted" and @subject=""] XPath’i accepted olduğu hâlde subject’i eksik gözlem kaydını arar. Verilen üç case’de sonuç boş olmalıdır. Pozitif integrity fixture’ında accepted/empty subject satırı eklenirse selector o satırı döndürür; bu real-world authentication bypass testi değildir.
Eksik log veya yanlış sessionRef join’i “binding yok” sonucu vermek için yeterli değildir. Creation ve lookup code path’lerinin aynı ref’i nasıl ürettiği, event delivery ve schema mapping gerçek uygulamada ayrıca doğrulanır.
Kayda dayalı identity, ayrı resource policy
Manuel gözlemde sırayla creation’ın kimliğini, Browser’ın credential olmayan metadata’sını ve accepted check’in resolved subject’ini karşılaştır. Kayıt Duru/Atlas iken UI başka tenant gösteriyorsa hangi state kaynağının değiştiğini incele. Client alanından identity çıkararak örneği “çözme”.
Hardening için framework session mechanism’ini ve accepted exchange surface’ini açık tut; URL fallback’lerini gizli otomatik behavior olarak bırakma. Sensitive değerleri observation export’tan ayır. Store availability sorununda korumalı işlemin authenticated kabul edilmemesi ve anlaşılır kullanıcı fallback’i birlikte tasarlanır.
ŞİMDİ VAKAYA UYGULA
Browser’ın handle taşıması identity’yi nerede kurar?
sid-duru-fixture yalnız öğretim alias’ıdır. Duru/Atlas binding’i server record’undan çözülür; creation, receipt ve lookup ayrı gözlemlerdir.
Vakadaki handle, server binding ve session lifetime için ayrı observation ara. Browser’da kalan değer server’ın güncel kabul kararını tek başına anlatır mı?
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
Opaque handle, trusted record ve audit ref: üç ayrı alan
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"authenticationPrecondition": {
"identityVerified": true,
"subject": "Duru",
"tenant": "Atlas",
"scope": "supplied trusted-event fixture; no password/MFA implementation"
},
"creationTrace": [
{
"seq": 1,
"event": "identity_verified",
"requestId": "binding-create",
"subject": "Duru"
},
{
"seq": 2,
"event": "record_created",
"requestId": "binding-create",
"sessionRef": "ledger-duru"
},
{
"seq": 3,
"event": "set_cookie_sent",
"requestId": "binding-create",
"browserHasNewHandle": false
},
{
"seq": 4,
"event": "cookie_arrived",
"requestId": "binding-create",
"browserHasNewHandle": true
}
],
"setCookieIllustration": "__Host-hd_session=SYNTHETIC_OPAQUE_HANDLE; Path=/; Secure; HttpOnly; SameSite=Lax",
"handleAlias": "sid-duru-fixture",
"storeRecord": {
"sessionRef": "ledger-duru",
"subject": "Duru",
"tenant": "Atlas",
"authenticationState": "authenticated",
"state": "active",
"handleRepresentation": "omitted; implementation-dependent lookup/verifier",
"createdAt_s": 10,
"validAt_s": 70
},
"cases": [
{
"id": "recognized",
"suppliedHandleLabel": "sid-duru-fixture",
"lookup": "recognized",
"result": "accepted",
"subject": "Duru",
"tenant": "Atlas",
"sessionRef": "ledger-duru",
"reason": "trusted_active_record"
},
{
"id": "missing",
"suppliedHandleLabel": null,
"lookup": "not_performed",
"result": "rejected",
"subject": null,
"tenant": null,
"sessionRef": null,
"reason": "no_handle"
},
{
"id": "unknown",
"suppliedHandleLabel": "unknown-fixture-label",
"lookup": "not_found",
"result": "rejected",
"subject": null,
"tenant": null,
"sessionRef": null,
"reason": "no_trusted_record"
}
],
"observationXML": "<sessionObservations><check case=\"recognized\" result=\"accepted\" subject=\"Duru\" sessionRef=\"ledger-duru\"/><check case=\"missing\" result=\"rejected\" subject=\"\"/><check case=\"unknown\" result=\"rejected\" subject=\"\"/></sessionObservations>",
"localXPath": "/sessionObservations/check[@result=\"accepted\" and @subject=\"\"]",
"expectedSelectedCases": []
}- authenticationPrecondition
- Önceden doğrulanmış identity fixture’ı; client username ile authenticated state kurulmaz.
- handleAlias / SYNTHETIC_OPAQUE_HANDLE
- Secrets-free sabit eğitim etiketleri; random üretim veya working credential değil.
- storeRecord.subject / tenant
- Application-owned bağlama context’i. Cookie’de serbest identity claim gösterilmez.
- storeRecord.handleRepresentation
- Raw token’ın DB’de tutulduğu varsayılmaz; lookup/verifier implementation bu çizimin dışında.
- sessionRef
- Audit correlation ref; credential yerine kabul edilmez.
- creationTrace.seq / browserHasNewHandle
- Server record creation, response gönderimi ve Browser arrival ayrımı.
- cases.lookup / result / reason
- Verilen recognized/missing/unknown kararları; gerçek session enumeration sonucu değil.
- observationXML / localXPath
- Sentetik accepted/subject tutarlılık selection’ı; tam authentication verifier veya çok-host correlation değil.
Fixture password, MFA, token generator, verifier veya gerçek store çalıştırmaz. Sabit etiketler hiçbir gerçek identity’ye erişim sağlamaz. Cookie flags inert HTTPS örneğidir; Browser ve lab runtime kanıtı ayrı gereklidir.
İki yanlış kanı
Session identifier ne kadar uzun görünüyorsa o kadar yüksek entropy sağlar.
Sabit veya predictable parçalar uzunluğu artırabilir ama aynı miktarda randomness sağlamaz. Generation kaynağı ve gerçek entropy değerlendirilir.
Browser’ın session cookie göndermesi, request’in identity’sini ve bütün resource izinlerini kanıtlar.
Server önce handle’ın trusted ve geçerli kayda binding’ini kontrol eder. Resource/action authorization bunun ardından ayrı değerlendirilir.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
creationTrace’in seq=3 aşamasındayız. set_cookie_sent kaydı browserHasNewHandle=false gösteriyor. Bu aşamada Browser yeni handle’ı saklamış sayılır mı?
- Hayır. Bu aşamada browserHasNewHandle=false.
- Evet. Server header hazırladığı anda browser state değişir.
Gerekçeli cevabı oku
Hayır. Bu aşamada browserHasNewHandle=false. — sent snapshot’ı remote jar state’ini değiştirmez. cookie_arrived, sonradan tamamlanan ayrı sınırdır.
sid alias ile ledger-duru referansı aynı credential türü mü?
Dersten seçilen artifact alanları; öğretim örneği
- handleAlias
- sid-duru-fixture
- storeRecord.sessionRef
- ledger-duru
- storeRecord.authenticationState
- authenticated
- Ledger referansını Cookie’ye koymak aynı authenticated binding’i kurar.
- Hayır. Ledger referansı correlation içindir; browser handle değildir.
Gerekçeli cevabı oku
Hayır. Ledger referansı correlation içindir; browser handle değildir. — sessionRef, güvenilen record’un audit referansıdır. Gerçek handle representation’ı bu örnekte gösterilmez ve implementation’a bağlıdır.
Bilinmeyen handle neden subject=null ile reddedilir? Kabul edilen session neden resource izni sağlamaz?
Gerekçeli cevabı oku
Bilinmeyen alias için güvenilen record bulunmaz; client iddiasından Duru kimliği üretilmez. Tanınan alias aktif record’a bağlanır, fakat object/action/context authorization ayrı karardır. authenticationPrecondition bu modelde önceden verilmiş güvenilen event’tir; password veya MFA’nın test edildiği anlamına gelmez.
□ Bilinmeyen handle’dan kimlik üretmedim.
□ Session’ın tanınması ile resource iznini ayırdım.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- RFC 6265 — HTTP State Management Mechanism4.2 Cookie · 4.2.2 Semantics · 8.4 Session Identifiers
- OWASP — Session Management Cheat SheetSession ID Entropy · Session ID Content (or Value) · Built-in Session Management Implementations · Used vs. Accepted Session ID Exchange Mechanisms · Session ID Generation and Verification: Permissive and Strict Session Management · Logging Sessions Life Cycle
- MDN — Using HTTP cookiesWhat cookies are used for: sign-in sequence · Creating, removing, and updating cookies
- MDN — Set-Cookie headerAttributes: HttpOnly, Secure · Cookie prefixes
- WHATWG — Fetch Standard2.2.5 Requests: credentials mode · 3.3.5 CORS protocol and credentials