Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

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.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Tanınan handle

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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ı

  1. 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
  2. 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
  3. 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
  4. 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ı
  5. 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
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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ı
  5. 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
  6. 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ı?

  1. Hayır. Bu aşamada browserHasNewHandle=false.
  2. 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
  1. Ledger referansını Cookie’ye koymak aynı authenticated binding’i kurar.
  2. 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