WEB / REFERENCE
Kavram sözlüğü
Kavramları ve somut artifact alanlarını tek yerde ara. Her açıklama dersine bağlanır; tablolar benzer görünen sorumlulukları ayırır.
Alanı bul, mekanizmasına dön.
Kavram tanımını veya artifact alanının anlamını hızlıca bul; sonra açıklamanın ait olduğu derste bağlamı incele.
- Bir kavram ara
Alan veya kavram ara kutusuna Origin ya da Content-Type yaz. Eşleşen tanımları oku; görünen alan/terim sayısıyla aramanı daralt.
- Benzer sorumlulukları ayır
Karşılaştırma tablolarında Origin ile schemeful site veya Cookie ile session store ayrımına bak. Aynı görünen kelimelerin hangi karar için kullanıldığını karşılaştır.
- Ders örneğiyle doğrula
Mekanizmayı dersinde aç bağlantısına veya alanın ders başlığına bas. O dersin artifact ve sahnesinde alanı bul; tanımı somut değeriyle açıklamayı dene.
Bir alan adını ezberlemek yerine hangi mekanizmaya ve karara ait olduğunu bulur; kısa tanımı ders kaydıyla ilişkilendirirsin.
Bir resource adresini parçalar: scheme, authority, path, query ve fragment farklı görevler üstlenir. Bir URL’nin parse edilmesi request’in gönderildiği anlamına gelmez.
WEB-06.01 · Mekanizmayı dersinde aç ↗OriginHTTP(S) için scheme, host ve etkin port sınırıdır. Aynı registrable domain üzerinde bulunan iki adres farklı origin olabilir.
WEB-06.02 · Mekanizmayı dersinde aç ↗Schemeful siteScheme ile registrable domain birlikte değerlendirilir. Public suffix sınırı gereklidir; her hostname’in son iki label’ını almak genel bir algoritma değildir.
WEB-06.02 · Mekanizmayı dersinde aç ↗HTTP methodRequest’in amaçlanan semantics’ini belirtir. Method adı tek başına uygulamanın authorization kararını veya yan etki üretip üretmediğini kanıtlamaz.
WEB-07.02 · Mekanizmayı dersinde aç ↗HTTP statusResponse sonucunu HTTP düzeyinde sınıflandırır. İşlemin kalıcı olarak tamamlandığı, body’nin parse edildiği ve DOM’un değiştiği ayrıca gözlenir.
WEB-07.02 · Mekanizmayı dersinde aç ↗Content-Type / AcceptContent-Type, gönderilen representation’ın media type’ını bildirir. Accept, client’ın response tercihlerini anlatır; iki header birbirinin yerine geçmez.
WEB-07.03 · Mekanizmayı dersinde aç ↗Content-LengthMessage content uzunluğunu octet olarak ifade eder. Türkçe bir string’in karakter sayısı ile UTF-8 byte sayısı aynı olmak zorunda değildir.
WEB-07.03 · Mekanizmayı dersinde aç ↗IntermediaryBir bağlantıda request alan server, başka bağlantıda request gönderen client olabilir. Direct peer, resource authority ve forwarded context farklı bilgilerdir.
WEB-09.01 · Mekanizmayı dersinde aç ↗Cache freshnessSaklanan response’un tekrar kullanılabilmesi için freshness ve applicable policy değerlendirilir. Saklanmış olmak, kişisel response’un başka kullanıcıya açılabileceğini göstermez.
WEB-09.02 · Mekanizmayı dersinde aç ↗DOMBrowser’ın document için oluşturduğu nesne ağacıdır. Gelen source text ile son DOM birebir aynı olmak zorunda değildir; yerel DOM değişimi server verisini değiştirmez.
WEB-10.02 · Mekanizmayı dersinde aç ↗Event loopBrowser host’unda tasks ve microtasks’ın çalıştırılmasını düzenler. Promise sonucunun gelmesi ile rendering gerçekleşmesi ayrı bağımlılıklardır.
WEB-10.03 · Mekanizmayı dersinde aç ↗Same-Origin PolicyBrowser’da origin’ler arasındaki erişim sınırıdır. Bir request’in gönderilmesi, resource’un embed edilmesi ve response’un script tarafından okunması farklı kararlardır.
WEB-11.01 · Mekanizmayı dersinde aç ↗CORSServer response’unu belirli bir origin’deki script’e açmak için browser ile paylaşım sözleşmesidir. Application authorization kararının yerine geçmez.
WEB-11.02 · Mekanizmayı dersinde aç ↗PreflightBelirli cross-origin request’lerden önce browser’ın yaptığı HTTP kontrolüdür. OPTIONS cevabı, kullanıcının business işlemini yapma yetkisinin kanıtı değildir.
WEB-11.02 · Mekanizmayı dersinde aç ↗Cookie / Set-CookieSet-Cookie response tarafında kayıt ve attribute önerir. Cookie request tarafında name/value çiftlerini taşır; Path veya HttpOnly attributes request’te geri gönderilmez.
WEB-12.01 · Mekanizmayı dersinde aç ↗HttpOnly / SecureHttpOnly cookie’nin script erişimini, Secure ise gönderim için transport şartını sınırlar. Bunlar server’ın session veya object authorization kararını üretmez.
WEB-12.02 · Mekanizmayı dersinde aç ↗SessionBu kursta opaque handle ile server kaydı arasında yönetilen bağdır. Cookie taşıma mekanizmasıdır; authenticated subject ve lifecycle server’da değerlendirilir.
WEB-13.01 · Mekanizmayı dersinde aç ↗Session revocationServer tarafında session’ın kullanımını geçersiz kılma kararıdır. Browser cookie’sinin silinmesi ile aynı olay değildir; distributed store görünürlüğü ayrıca önemlidir.
WEB-13.03 · Mekanizmayı dersinde aç ↗Object authorizationDoğrulanmış subject’in belirli action, tenant ve object için izinli olup olmadığını değerlendirir. Login başarı sonucu bütün object’leri erişilebilir yapmaz.
WEB-14.05 · Mekanizmayı dersinde aç ↗202 AcceptedRequest’in işlenmek üzere kabul edildiğini bildirir; worker’ın bitirdiğini veya kalıcı business sonucunun oluştuğunu tek başına kanıtlamaz.
WEB-19.02 · Mekanizmayı dersinde aç ↗Web neyi sağlar; Internet neyi taşır?Internet birbirine bağlı ağların iletişim altyapısıdır. Web, URL’lerle tanımlanan kaynaklara HTTP üzerinden eriştiğimiz, belgeleri ve application etkileşimlerini bu altyapının üzerinde sunan sistemdir. E-posta da Internet’i kullanabilir; bir e-posta uygulamasının browser arayüzü Web olabilir ama mail taşıma protokolü HTTP olmak zorunda değildir. Web’i bütün Internet’in adı olarak kullanmak gözlemlediğin katmanı belirsizleştirir.
WEB-01.01 · Core · Web uygulamasının aktörleri ↗Client ve server birer roldürBrowser bir HTTP etkileşiminde request gönderen client’tır. Handler bu request’i alan server tarafında çalışır. Client ve server yalnız cihazların kalıcı etiketleri değildir: handler başka bir HTTP servisine request gönderirse o etkileşimde client rolündedir. Bir makinenin hem browser hem local server çalıştırması da mümkündür.
WEB-01.01 · Core · Web uygulamasının aktörleri ↗Resource, kaydı kopyalamakla aynı şey değildirBir resource HTTP’nin hedefidir; bir dosya, kitap bilgisi veya hesaplanmış arama sonucu olabilir. URL onu tanımlar. Representation ise o resource’ın belirli bir anda belirli biçimde sunulan görünümüdür. Atlas kitabının JSON response’u ile HTML sayfası farklı representation tasarımları olabilir. Her URL disk üzerinde aynı isimli bir dosyaya karşılık gelmek zorunda değildir.
WEB-01.01 · Core · Web uygulamasının aktörleri ↗Website, application ve API nasıl birleşir?Website birbiriyle ilişkili sayfa ve resources bütününü anlatır. Web application bu yüzey üzerinden işlev sunar: kitap görüntüleme, arama veya kişisel liste oluşturma gibi. Web API ise programların request/response sözleşmesiyle kullanacağı bir arayüzdür. Aynı ürün hem HTML website hem JavaScript application hem JSON API içerebilir; bunlar birbirini dışlayan ürün sınıfları değildir.
WEB-01.01 · Core · Web uygulamasının aktörleri ↗Ekran ile otoriteyi ayrı tutBrowser kullanıcıya görünüm ve kontrol sağlar; server’ın koruduğu kayıt üzerinde son izin kararı trusted server/service tarafına aittir. Browser’ın “bu kullanıcı owner” göstermesi server policy’sinin çalıştığını kanıtlamaz. Handler’ın storage’a erişebilmesi de her client’in bütün kayıtlara yetkili olduğu anlamına gelmez.
WEB-01.01 · Core · Web uygulamasının aktörleri ↗Actor rolünü access hakkı sanmakNormal API akışında handler, client’ten gelen seçimi alır ve kendi iş kuralıyla değerlendirir. “Request backend’e ulaşmış, dolayısıyla storage’daki bütün alanlar sunulabilir” varsayımı yanlıştır. Ulaşabilirlik bir permission değildir. Bu hata response alanlarının veya private resources’ın gereğinden geniş açılmasına yol açabilir.
WEB-01.01 · Red · Web uygulamasının aktörleri ↗Kutular arasında değişen güvenClient’in request’i handler için dış girdidir. Handler tarafından oluşturulan storage seçimi ise server’ın sorumluluğundadır. Client’in object veya role etiketini server’ın kendi metadata’sı gibi kabul etmesi trust boundary’yi yanlış yere taşır. Bunun kaynağı browser’ın kötü olması değil, iki kaynağın aynı otorite kabul edilmesidir.
WEB-01.01 · Red · Web uygulamasının aktörleri ↗Her error bir compromise değildirKitap bulunamadığında handler’ın 404 vermesi, storage’ın erişilememesi veya UI’da boş durum görünmesi farklı sonuçlardır. Bir actor haritası, bunlardan hangisinin security policy ihlali olduğunu tek başına söylemez. Kitap ekranı açılmaması bir kullanılabilirlik sorunu olabilir; private alanın çıkması gizlilik ihlalidir.
WEB-01.01 · Red · Web uygulamasının aktörleri ↗Hangi gözlem hangi actor’ı gösterir?Browser Network kaydı HTTP target, status ve browser’ın gördüğü response’u gösterir. Handler trace’i application’ın hangi branch’i seçtiğini gösterebilir. Storage adapter observation’ı kaydın nasıl bulunduğunu açıklar. Browser’daki response, storage’ın gerçek şemasını veya bütün query’lerini kendi başına kanıtlamaz.
WEB-01.01 · Blue · Web uygulamasının aktörleri ↗Normal ve beklenmeyen output’u ayırPositive baseline, public kitabın id/title alanlarıyla gösterilmesidir. Benign negatif örnek, verilmiş missing senaryosunda 404 ve açıklanabilir boş görünüm elde etmektir. Public output sözleşmesinin dışındaki private alanı görmek ise inceleme gerektirir. Bir error status tek başına bunu ifade etmez.
WEB-01.01 · Blue · Web uygulamasının aktörleri ↗Haritayı bakım aracı olarak kullanYeni storage, proxy veya export job eklenince aynı inventory’ye owner, input source ve enforcement noktası ekle. Actor sayısını artırmak otomatik isolation sağlamaz; hangi güven sınırının hangi control ile korunduğu belirtilmelidir. Log tasarımı da component’lere göre yapılır, credential değerleri bu haritaya yazılmaz.
WEB-01.01 · Blue · Web uygulamasının aktörleri ↗actors[].ownerComponent’i işleten otorite; record owner ile aynı kavram değil.
WEB-01.01 · Web uygulamasının aktörleri ↗flows[].kindHTTP ile local function call/return ayrımı.
WEB-01.01 · Web uygulamasının aktörleri ↗resources[].representationHTTP ile sunulan veri biçimi; disk dosyası veya storage şeması değil.
WEB-01.01 · Web uygulamasının aktörleri ↗publicFields / excludedFieldsPublic output sözleşmesindeki alanlar ve gönderilmeyecek private alan örneği.
WEB-01.01 · Web uygulamasının aktörleri ↗Browser’a URL yazınca başlayan işhttps://books.example/catalog gibi bir URL, scheme, host ve path taşır. Browser bunu yeni document’e navigation olarak işler. Gerekli olduğunda host için DNS bilgisi edinilir, hedefe giden IP network yolu kullanılır ve uygun connection kurulmuş olur. HTTP/1.1 ve HTTP/2 yaygın olarak TCP üzerinde; HTTPS bunlarda TLS ile çalışır. HTTP/3 ise QUIC üzerinde HTTP taşır ve QUIC’in TLS tabanlı güvenli connection’ını kullanır. IP routing web path’i seçmez; /catalog hangi handler’a gidecek sorusu application/HTTP tarafındadır.
WEB-01.02 · Core · Bir request’in uçtan uca yolculuğu ↗Navigation ile fetch() aynı işi yapmazDocument navigation’da browser alınan belgeyi yeni sayfanın kurulmasına bağlar; HTML içindeki resources da başka yüklemeler doğurabilir. Atlas Notları ekranı zaten açıktır. Düğmeye basıldığında JavaScript, /api/book?case=found için fetch() çağırır. Bu çağrı mevcut document’i otomatik olarak başka sayfaya dönüştürmez; program bir Response alır ve sonucu nasıl göstereceğine karar verir.
WEB-01.02 · Core · Bir request’in uçtan uca yolculuğu ↗Handler’ın aldığı request ile yaptığı işlemClient’in method’u GET, path’i /api/book, query selector’ı case=found’dur. Case selector’ı eğitim uygulamasının önceden verdiği benign senaryoyu seçer. Handler route’u belirler, selector’ı tanır ve storage adapter’a kitap lookup’ı yaptırır. Handler’da route seçimi local processing’dir; bir başka HTTP request değildir.
WEB-01.02 · Core · Bir request’in uçtan uca yolculuğu ↗Record’dan JSON response’aFound branch’inde handler id ve title alanlarını book nesnesinin içine yerleştirir; title Atlas Notları’dır. Serialization JSON body’sinin UTF-8 bytes’ını üretir. HTTP response status’u 200’dür. Missing branch’inde bir record yoktur; handler 404 ile BOOK_NOT_FOUND hata alanını sunar. Bu 404 handler’ın verdiği bir HTTP yanıtıdır, request’in network’te kaybolması değildir.
WEB-01.02 · Core · Bir request’in uçtan uca yolculuğu ↗Response geldi; body henüz okunmuş olmayabilirfetch() promise’i response status ve headers hazır olduğunda Response ile fulfill olabilir; body’nin tamamının okunmasını beklemek zorunda değildir. 404 de böyle bir Response üretir. response.ok bu durumda false’tur. Application status’u değerlendirir; await response.json() body’yi okur ve JSON parsing yapar. Bunlar tek promise veya tek başarı kararı değildir.
WEB-01.02 · Core · Bir request’in uçtan uca yolculuğu ↗Veri browser’da; görünümün değişmesi ayrıJSON parse sonucu JavaScript memory’sinde bir nesnedir. Found branch’i title değerini DOM’daki kitap başlığına text olarak yazar. Missing branch’i “Kitap bulunamadı” görünümünü seçer. Bu DOM mutation’dan sonra browser uygun rendering adımlarında görüntüyü günceller. fetch() bir DOM API’si değildir; response receipt kendi başına ekrandaki kitabı değiştirmez.
WEB-01.02 · Core · Bir request’in uçtan uca yolculuğu ↗Client seçimi server kararı değildirDüğme normal olarak bir case selector gönderir; handler bunu kendi kapalı senaryo listesiyle değerlendirir. Client’te görünen “found” etiketi storage sonucunun otoritesi değildir. Üründe identity, object ownership veya fiyat gibi bilgiler de client etiketiyle doğrulanmış kabul edilemez.
WEB-01.02 · Red · Bir request’in uçtan uca yolculuğu ↗Success etiketinin sınırıHTTP 200 bir protocol sonucu, valid JSON bir parse sonucu ve doğru kitap bir iş sonucu verir. Bunları tek “başarılı” kontrolüne indirmek UI’da yanlış veri veya eski state gösterebilir. 404’ü network exception sanmak da beklenen missing sonucunu belirsiz error’a çevirebilir.
WEB-01.02 · Red · Bir request’in uçtan uca yolculuğu ↗Trace, kendi verisini dışarı sızdırmamalıCorrelation için requestId kullanmak handler ve browser gözlemini bağlayabilir. Bütün request/response body’lerini loglamak ise private veri veya credential’ı başka bir depoya taşıyabilir. Debug bilgisi almakla onun herkese sunulması farklı kararlardır.
WEB-01.02 · Red · Bir request’in uçtan uca yolculuğu ↗Network panel ve application trace’i birlikte okuDevTools’ta request target, method, status, response headers ve body’yi incele. X-Lab-Request-Id ile aynı handler trace’ini bağla; bu header’ın adı lab sözleşmesidir. Application event sırası route selection, local lookup ve response creation’ı gösterir. Bu sıralama storage’dan gerçek packet capture alındığı anlamına gelmez.
WEB-01.02 · Blue · Bir request’in uçtan uca yolculuğu ↗Found, missing ve eksik kanıtFound baseline’ında 200, JSON book.title ve aynı başlığın DOM’da görünmesi beklenir. Missing benign case’inde 404, BOOK_NOT_FOUND ve not-found görünümü beklenir; fetch() yine Response üretir. Bu normal negative branch’i alarm olarak sınıflandırmak doğru değildir.
WEB-01.02 · Blue · Bir request’in uçtan uca yolculuğu ↗Açıklanabilir bütünlük kontrolüBu örnek için status/body sözleşmesini karşılaştır: found → 200 + book; missing → 404 + error. Her response’da body’nin UTF-8 byte sayısı Content-Length ile eşleşir. Application’ın custom requestId’si trace ile aynı olmalıdır. Kontrol mantığı bu fixture şemasına aittir; evrensel web detector değildir.
WEB-01.02 · Blue · Bir request’in uçtan uca yolculuğu ↗request / responseHTTP/1.1 öğretim gösterimi; DevTools raw capture değil. Headers/body boş CRLF satırıyla ayrılır.
WEB-01.02 · Bir request’in uçtan uca yolculuğu ↗Content-Length / bodyUtf8BytesBody octet sayısı; compression uygulanmaz. Unicode karakter sayısından farklı olabilir.
WEB-01.02 · Bir request’in uçtan uca yolculuğu ↗X-Lab-Request-Id / requestIdBu örneğin özel correlation alanı; HTTP standardı değil.
WEB-01.02 · Bir request’in uçtan uca yolculuğu ↗trace[].actor / event / transportServer-side processing ve local storage adapter çağrısı; network protocol kaydı değil.
WEB-01.02 · Bir request’in uçtan uca yolculuğu ↗browserExpectedHTTP Response, body read ve view için beklenen ayrı sonuçlar.
WEB-01.02 · Bir request’in uçtan uca yolculuğu ↗Public kitap, private notAtlas Notları’nın public kitap başlığı herkes tarafından okunabilir. Aynı application’da Duru’ya ait note-atlas-01 adlı editorial note private’tır. Asset, korunması değerli bir şeydir: burada private notun içeriği, kimin owner olduğunun doğruluğu ve yapılan read işleminin doğru actor’a bağlanması. Yalnız password veya secret key’ler asset değildir; iş kaydı, erişilebilir hizmet ve güvenilir audit de değer taşıyabilir.
WEB-01.S01 · Core · Assets, threats ve trust assumptions ↗Threat, weakness, vulnerability, impactThreat, olumsuz sonuca yol açabilecek durum veya olaydır. “Private notun entitlement dışındaki bir actor’a sunulması” bir threat ifadesidir; bunu gerçekleştirebilecek kişi veya başka kaynak threat source olabilir. Weakness, tasarım/uygulama kusuru sınıfını anlatabilir: trusted authorization eksikliği gibi. Vulnerability ise belirli sistemde threat’in kullanabildiği veya tetikleyebildiği zayıflıktır. Kaynak sözlükler bu sözcükleri farklı genişlikte kullanabilir; burada sınıf ile somut sistem durumunu ayırmak için bu çalışma ayrımını kullanıyoruz.
WEB-01.S01 · Core · Assets, threats ve trust assumptions ↗Güvenilen varsayımı yazNormal note.read akışında browser hedefi seçer; application server doğrulanmış principal ve aktif tenant context’i kurar. Note’un ownerId ve tenantId alanları server metadata’sıdır. Beklenen kural, bu private örnekte verified actor + aynı tenant + owner match koşullarından sonra body’nin verilmesidir. Duru’nun kendisini UI’da owner olarak seçmesi bu üç koşulu kanıtlamaz.
WEB-01.S01 · Core · Assets, threats ve trust assumptions ↗Kontrol, kanıt ve artık kapsamKontrol application’ın trusted service layer’ında note.read kararını enforce eder. Unverified principal deny olur; foreign tenant deny olur; verified own-note allow olur. Bu öğretim matrisi ne olması gerektiğini belirtir. Gerçek vulnerability iddiası için uygulamanın hangi kuralı uyguladığı ve gerçekten hangi private veriyi dışarı verdiği ayrıca gözlenmelidir.
WEB-01.S01 · Core · Assets, threats ve trust assumptions ↗Koşulları kurmadan vulnerability demePrivate note okunurken necessary entitlement owner/tenant kuralıdır. Bozulabilecek varsayım, browser’ın kendi actor beyanının trusted principal yerine kullanılmasıdır. Bu bir tasarım incelemesi sorusudur; belirli bir uygulamada bu beyanın kabul edildiğine dair kanıt yoksa confirmed vulnerability diye yazılmaz.
WEB-01.S01 · Red · Assets, threats ve trust assumptions ↗Impact sınırını genişletmeOwn-note allow, işlevin olması gerektiği gibi çalışmasıdır; threat’in gerçekleşmesi değildir. Foreign tenant deny da engelleyici policy örneğidir. Private note’un entitlement dışında çıktığı gözlense bile buradan owner metadata’nın değiştiği veya bütün tenant’ın verisinin okunduğu sonucu otomatik çıkmaz.
WEB-01.S01 · Red · Assets, threats ve trust assumptions ↗Kontrolün hangi tehdidi azalttığını belirtTrusted principal kontrolü yanlış kimlik iddiasını kararın otoritesi yapmayı engeller. Tenant/ownership kontrolü protected body’nin entitlement dışına verilmesini sınırlar. Output projection, izinli response’ta private alanın yanlışlıkla bulunmasını azaltır. Bu kontroller farklı hataları ele alır; birinin bulunması diğerinin işlendiği kanıtı değildir.
WEB-01.S01 · Red · Assets, threats ve trust assumptions ↗Threat record bir olay kaydı değildirArtifact’in threat record’ı asset, boundary, varsayım, olası weakness, control ve beklenen observation’ı birleştirir. Bu gelecekte oluşabilecek koşulları düşünme aracıdır. Decision event ise çalışan application’ın belirli request için verdiği sonucu gösterir. İkisinin adı, zamanı ve kanıt kapsamı ayrı tutulur.
WEB-01.S01 · Blue · Assets, threats ve trust assumptions ↗Beklenen allow, beklenen deny, bilinmeyenVERIFIED_OWN allow + note body normal positive örnektir. UNVERIFIED_ACTOR deny + protected body yokluğu ve OTHER_TENANT deny aynı policy’nin negative kontrolleridir. Beklenen denial güvenli bir sonuç olabilir; bir kullanıcı rolünün kaldırılması gibi benign değişikliklerle oluşabilir. Alarm için her denial’ı ihlal saymak gereksiz gürültü üretir.
WEB-01.S01 · Blue · Assets, threats ve trust assumptions ↗Review ve regression neyi kapatır?Threat record’daki control owner, beklenen positive/negative cases’i uygulama değişikliğinden sonra yeniden değerlendirir. Verified own erişim korunur; missing verification ve foreign tenant deny kalır; protected output deny sonrasında çıkmaz. Böylece kontrolü her şeyi kapatarak yeşile çevirmek yerine intended işlevi de korursun.
WEB-01.S01 · Blue · Assets, threats ve trust assumptions ↗asset / protectedPropertyKorunan değer ve beklenen güvenlik özelliği.
WEB-01.S01 · Assets, threats ve trust assumptions ↗candidateWeakness / vulnerabilityStatusİncelenecek kusur varsayımı; gerçek sistem vulnerability kanıtı değildir.
WEB-01.S01 · Assets, threats ve trust assumptions ↗conditionalImpactYalnız belirtilen olay gerçekleşirse gelen etki; başka impact sınıfları eklenmez.
WEB-01.S01 · Assets, threats ve trust assumptions ↗principalVerified / verifiedContextTenantServer-side öğretim girdileri; client actor etiketiyle aynı otorite değil.
WEB-01.S01 · Assets, threats ve trust assumptions ↗expected / evidenceRequiredOlması gereken karar ve gözlenecek kanıt; observed runtime sonucu ayrıca tutulur.
WEB-01.S01 · Assets, threats ve trust assumptions ↗Byte ile message sınırı aynı değilByte, bu protokollerde sekiz bitlik octet olarak ele alınır. ABCDEF text’inin UTF-8 bytes’ı altı octet’tir; başka Unicode karakterler birden fazla byte kullanabilir. Application’ın “bir message gönderdim” demesi transport’ın aynı sınırı koruduğunu göstermez. TCP ordered byte stream sunar; application write ve karşı taraf read çağrılarının parçalaması farklı olabilir.
WEB-02.01 · Core · Byte’tan local network’e ↗Stream → segment → packet → frameTCP stream’in parçaları TCP segments ile taşınır; bu segments IP datagrams içine yerleşir. Ethernet link’te IP packet bir frame’in payload’ı olur. Header’lar her katmana farklı bilgi ekler: TCP port/sequence, IP source/destination, Ethernet source/destination MAC. “Paket” sözcüğünü hepsi için kullanmak hangi sınırı incelediğini saklayabilir; teknik artifact’te katmanı adlandır.
WEB-02.01 · Core · Byte’tan local network’e ↗Interface ve local deliverySentetik host 192.0.2.10 adresini eth-demo interface’inde kullanır. Bu interface’in MAC’i 02:00:00:00:00:10’dur. Remote web endpoint 198.51.100.200’e giden örnekte next hop gateway 192.0.2.1’dir. İlk Ethernet frame’in destination MAC’i remote server’ın değil gateway interface’inin MAC’i olur; IP destination ise remote endpoint’i göstermeye devam eder.
WEB-02.01 · Core · Byte’tan local network’e ↗IPv4: ARP hangi adresi çözer?Routing önce next-hop IP’yi ve interface’i belirler. Ethernet üzerinde IPv4 next-hop MAC bilinmiyorsa ARP bu local IP→MAC eşlemesini bulmaya yardım eder. Örnekte soru 198.51.100.200’ün MAC’i değil 192.0.2.1’in MAC’idir. Sender IP/MAC ve target IP alanları bu soruyu ayırt eder. Uygun reply’den sonra neighbor mapping kullanılabilir.
WEB-02.01 · Core · Byte’tan local network’e ↗IPv6: Neighbor Discovery’nin kapsamıIPv6 Ethernet communication için ARP kullanmaz. ICMPv6 tabanlı Neighbor Discovery adres çözümleme, router/prefix öğrenme ve neighbor reachability gibi görevler içerir. Address resolution’da on-link komşu için Neighbor Solicitation/Advertisement ilişkisi kullanılır. Bir remote hedefte yine first-hop neighbor’ın link-layer adresi gerekir; bütün yolun MAC’lerini bulmak gerekmez.
WEB-02.01 · Core · Byte’tan local network’e ↗Stream sınırını yanlış yorumlamakNormal application transport’tan gelen bytes’ı kendi message grammar’ıyla tamamlar. Bir read çağrısını “tam HTTP message” saymak gerekli veriyi eksik işleyebilir veya sonraki message’ın bytes’ını aynı işlem içine katabilir. Bu bir parser/state varsayımıdır; her fragmentation otomatik security incident değildir.
WEB-02.01 · Red · Byte’tan local network’e ↗Local mapping’i identity kanıtı saymakARP/ND mapping next-hop delivery’ye yardım eder. Onun varlığını peer’ın application identity’si veya yetkisi sanmak trust katmanlarını birleştirir. Basic ARP kriptografik application identity doğrulaması sağlamaz; IPv6 ND’nin de ayrıca güvenlik koşulları vardır.
WEB-02.01 · Red · Byte’tan local network’e ↗Interface yanlış seçilirse kapsam değişirFrame doğru formatta olsa bile yanlış interface veya yanlış next hop’a sunulursa beklenen hedefe erişim bozulabilir. Yanlış link varsayımı gizlilik veya availability riskini artırabilir; gerçek etki link topolojisi ve üst katman korumasına bağlıdır.
WEB-02.01 · Red · Byte’tan local network’e ↗Header’ı bulunduğu katmanda okuArtifact’teki hex yalnız 14-byte Ethernet II header’dır: ilk altı destination MAC, sonraki altı source MAC, son iki EtherType’tır. 0800 IPv4 payload’ı belirtir. Payload summary’deki source/destination IP başka katmandadır. Header tek başına HTTP method, TLS identity veya application permission göstermez.
WEB-02.01 · Blue · Byte’tan local network’e ↗Known, unknown ve farklı protokolNormal IPv4 örneğinde gateway mapping’i vardır ve frame next hop’a yönelir. Unknown mapping örneğinde ARP çözümleme sonucu gerekir; HTTP response görülmemesi tek başına authorization denial değildir. IPv6 örneği ND mapping’i kullanır ve ARP event beklenmez.
WEB-02.01 · Blue · Byte’tan local network’e ↗Açıklanabilir tutarlılık kontrolüBu fixture için destination MAC=next-hop MAC ve IP destination=remote endpoint birlikte doğru olmalıdır. Header offset/length alanları toplam 14 byte eder. Application write/read chunk birleşimleri aynı stream’i verir. Bu kontroller gerçek NIC veya network teslimini kanıtlamaz.
WEB-02.01 · Blue · Byte’tan local network’e ↗hex / offset / lengthHeader bytes ve sıfır tabanlı alan konumları; payload/FCS/padding yok.
WEB-02.01 · Byte’tan local network’e ↗destinationMac / nextHopIpLocal frame’in komşusu; remote IP destination’dan farklı olabilir.
WEB-02.01 · Byte’tan local network’e ↗arpSummary.targetProtocolAddressÇözülecek local IPv4 next hop; raw ARP packet değil.
WEB-02.01 · Byte’tan local network’e ↗teachingState / resolutionEğitim sonucu ve IPv4/IPv6 protokol ayrımı; OS state adı değil.
WEB-02.01 · Byte’tan local network’e ↗writes / possibleReadsMessage sınırı korunmayan TCP stream için sentetik chunk örneği.
WEB-02.01 · Byte’tan local network’e ↗IP address neyi tanımlar?IP network katmanında packet’in source ve destination adreslerini taşır. IPv4 adresi 32 bit, IPv6 adresi 128 bit kullanır. 192.0.2.10 veya 2001:db8:1::10 biçimleri bu bitlerin okunabilir gösterimidir. Bir interface birden fazla adres taşıyabilir; adres host’un, insanın veya account’un değişmez identity’si değildir.
WEB-02.02 · Core · IP, route ve NAT ↗Subnet ve on-link kararıHost’un 192.0.2.10/24 yapılandırması bu basit IPv4 örneğinde connected route 192.0.2.0/24 oluşturur. /24 ilk 24 bitin network prefix’ini ifade eder; mask 255.255.255.0’dır. 192.0.2.20 bu route’a uyar ve doğrudan on-link next hop olur. 198.51.100.200 bu prefix’e uymaz; başka bir route gerekir.
WEB-02.02 · Core · IP, route ve NAT ↗Route table ve default gatewayArtifact üç route içerir: connected 192.0.2.0/24, 198.51.100.0/25 için 192.0.2.254 üzerinden özel route ve 0.0.0.0/0 için 192.0.2.1 default gateway. Bu basit tek-table modelinde eşleşen en uzun prefix seçilir. 198.51.100.20 /25’e uyar; 198.51.100.200 uymaz ve default route kullanır. Default, diğer eşleşmelerin önüne geçen evrensel yol değildir.
WEB-02.02 · Core · IP, route ve NAT ↗NAT adresi, PAT adres ve portu çevirirRouting çıkış yolunu seçer; NAT bu yol üzerindeki address translation işlevidir. Basic NAT IP adreslerini çevirir. PAT adıyla da anılan NAPT, TCP/UDP örneklerinde address+port tuple’larını çevirerek bir outside IP üzerinden birden çok inside akışı ayırabilir. Port kavramını sonraki ders açacak; burada stream’in hangi local endpoint’e döneceğini ayırt eden sayısal alan olarak düşün.
WEB-02.02 · Core · IP, route ve NAT ↗IPv6, NAT ve permission ayrı tasarım kararlarıIPv6 geniş address space sağlar; routable IPv6 bağlantısı için IPv4-style NAT zorunlu değildir. Bu derste IPv6 no-NAT branch’i source 2001:db8:1::10 ve destination 2001:db8:2::20 adreslerini korur. First-hop link address yine ND ile çözülebilir. Bu bütün IPv6 deployments’ta translation hiç bulunmaz demek değildir; burada seçilmiş normal yol translation kullanmaz.
WEB-02.02 · Core · IP, route ve NAT ↗Next hop’u nihai hedef sanmakNormal forwarding’de gateway paketi başka hop’a taşır. “Destination gateway’dir, demek web resource gateway’de” varsayımı link/IP/application katmanlarını karıştırır. Yanlış route seçimi beklenen hedefe ulaşımı bozabilir; confidentiality etkisi üst katman peer doğrulamasına ve gerçek path’e bağlıdır.
WEB-02.02 · Red · IP, route ve NAT ↗Address translation’ı güvenlik policy’si saymakNAT’ın tuple çevirmesi communication mekanizmasıdır. Mapping’in dar görünmesi bütün permission sınırlarını kurduğu anlamına gelmez. Static inbound mapping veya farklı filtering davranışı dışarıdan erişim kapsamını değiştirebilir; izin kararı ayrıca tanımlanmalıdır.
WEB-02.02 · Red · IP, route ve NAT ↗Observed outside IP’yi actor authority yapmakPAT aynı outside IP’den birçok inside tuple taşıyabilir. HTTP logundaki source IP’yi tek account’un otoritesi gibi kullanmak yanlış attribution veya aşırı geniş allow/deny oluşturabilir. IP-temelli controls yardımcı context olabilir; doğrulanmış actor identity’sinin yerine geçmez.
WEB-02.02 · Red · IP, route ve NAT ↗Route ve translation ayrı observation’larRoute table intended next hop/interface’i gösterir; frame header o linkte kullanılan neighbor’ı gösterebilir. NAT table inside/outside tuple ilişkisini açıklar. HTTP access logu application’ın gördüğü peer’ı yazar. Biri diğerlerinin bütün alanlarını otomatik kanıtlamaz.
WEB-02.02 · Blue · IP, route ve NAT ↗Local, default ve more-specific baseline192.0.2.20 için on-link, 198.51.100.20 için /25 via .254, 198.51.100.200 için default via .1 beklenir. Positive örnek intended route/mapping sonucu; benign varyasyon daha özel route’un default’ı geçmesidir. Route yoksa no-route sonucu ayrı tutulur.
WEB-02.02 · Blue · IP, route ve NAT ↗Beklenen alanları karşılaştırBu fixture’da route matching’i IP prefix üzerinden hesapla; aynı endpoint için route ve next-hop açıklaması eşleşir. NAT forward mapping’den türetilen reverse tuple inside endpoint’e döner. Bu kontrol header checksum veya canlı routability testi değildir.
WEB-02.02 · Blue · IP, route ve NAT ↗prefix / via / interfaceEşleşme scope’u, next-hop gateway veya on-link route ve çıkış interface’i.
WEB-02.02 · IP, route ve NAT ↗expectedPrefix / expectedNextHopDeterministik longest-prefix-match sonucu; canlı route cache kaydı değil.
WEB-02.02 · IP, route ve NAT ↗inside / outside / remoteBu TCP mapping’inin üç tuple rolü; global NAT ürünü şeması değil.
WEB-02.02 · IP, route ve NAT ↗replyBeforeTranslation / replyAfterTranslationReverse mapping’de yalnız ilgili destination tuple’ın inside endpoint’e dönüşü.
WEB-02.02 · IP, route ve NAT ↗ipv6NoNat.translationSeçilmiş IPv6 branch’i NAT uygulamaz; bütün IPv6 deployments hakkında kural değildir.
WEB-02.02 · IP, route ve NAT ↗Port sayısı tek başına endpoint değildirTCP ve UDP header’ları source ve destination için 16-bit port alanları taşır: alanın sayısal aralığı 0–65535’tir. Alan aralığı her değerin aynı şekilde application’a ayrılabileceğini söylemez. TCP 443 ve UDP 443 farklı transport bağlamlarıdır. IP header’ında bu TCP/UDP port alanları yoktur; hangi transport’ın taşındığını da bilmek gerekir.
WEB-02.03 · Core · Port, socket ve firewall ↗Socket bir OS nesnesi; connection iki uç arasındaNetwork socket, application’ın OS communication interface’iyle kullandığı nesnedir. “Socket = port” eşitliği yetersizdir: address family, transport ve local address kapsamı önemlidir. TCP connection için local ve remote IP/port çifti, transport bağlamıyla birlikte hangi conversation’ın kastedildiğini ayırır. Aynı server port’una birden fazla client connection gelebilir.
WEB-02.03 · Core · Port, socket ve firewall ↗Bind, listen ve accept farklı işlerLinux socket API’sinde bind() socket’e local address atar; listen() uygun connection-oriented socket’i incoming connections için passive hale getirir; accept() yeni connection için ayrı socket döndürür. Buradaki normal TCP service bu rolleri kullanır. Her socket TCP listener değildir: UDP datagrams aynı listen/accept connection modeline uydurulmaz.
WEB-02.03 · Core · Port, socket ve firewall ↗Firewall hangi noktada hangi kararı verir?Packet filtering address, transport, port, yön ve interface gibi alanlara dayanabilir. Stateful filtering ayrıca firewall’un izlediği connection context’ini kullanır. Bu modelde FORWARD, firewall host’una ait olmayan transit traffic’i inceler; INPUT firewall host’unun kendisine gelen, OUTPUT ise onun ürettiği traffic içindir. Chain scope, rule’nun neyi koruduğunu değiştirir.
WEB-02.03 · Core · Port, socket ve firewall ↗Allowed, listening ve successful ayrı sonuçlarFirewall allow yalnız o policy noktasının geçiş kararını anlatır. Matching listener yoksa normal TCP connection kurulmaz; listener varsa da routing, kapasite veya sonraki katmanlar sonucu değiştirebilir. Bu dersin no-listener branch’i fixture’da yokluğu bilinen listener nedeniyle connection kurulamamasını gösterir. Gerçek OS error code veya gönderilmiş RST capture’ı üretmez.
WEB-02.03 · Core · Port, socket ve firewall ↗Bozulan varsayım: açık sayıyı güvenilen servis saymakTCP 443 için geçiş izni vermek, o endpoint’in beklenen web service olduğu varsayımını taşıyabilir. Bu varsayım ancak doğru bind/transport, deployment ve application/TLS kontrolüyle desteklenir. Process değişirse veya rule farklı interface scope’una uygulanırsa aynı sayısal port başka sonucu gösterebilir.
WEB-02.03 · Red · Port, socket ve firewall ↗Bozulan varsayım: state ve yönün aynı olmasıRETURN için gereken koşul known flow’ya ait reverse tuple ve observer’ın ilgili state’idir. Sadece destination port’a ya da metindeki ESTABLISHED sözcüğüne bakmak bu bağı kaybettirir. Asymmetric path’te bir observer gerekli context’i görmemiş olabilir; bu durum bütün policy’lerin aynı sonucu vereceğini göstermez.
WEB-02.03 · Red · Port, socket ve firewall ↗Bozulan varsayım: sessizlik tek bir neden gösterirNo-listener branch’inde firewall allow ve listener absent aynı anda doğrudur. Filtered branch’inde ise listener’in var olması traffic’in ona vardığını göstermez. Telemetry olmayan bir gerçek durumda “hiç yanıt yok” bilgisi bu iki sonucu ayırmaya yetmez.
WEB-02.03 · Red · Port, socket ve firewall ↗Listener, flow ve application kanıtını bağlaListener inventory, process’in hangi local endpoint’te beklediğini gösterir. Connection kaydı iki peer tuple’ını ve endpoint’in kendi state’ini anlatır. Firewall observation policy noktasındaki rule/verdict’i verir. Application log ise request ve permission sonucunu ayrıca kaydeder. Aynı terimi dört gözlem yerine kullanma.
WEB-02.03 · Blue · Port, socket ve firewall ↗Pozitif ve negatif baseline beraberNormal case: outbound NEW TCP 443 WEB_OUT ile allow, matching listener present; connection kurulması mümkün. Negative case: UDP 443 aynı rule’ya eşleşmez. Unsolicited inbound NEW default deny’dir. Known reverse flow ESTABLISHED RETURN ile allow olur. Bu policy bütün olası ürün davranışlarının envanteri değildir.
WEB-02.03 · Blue · Port, socket ve firewall ↗Regression niyeti alanlardan doğrulaPolicy review’sinde transport, direction, state kaynağı ve exact tuple koşullarını birlikte ele al. TCP allow eklerken UDP’nin yanlışlıkla açılmadığını; return traffic şartını değiştirirken yeni inbound traffic’in aynı kapsama girmediğini doğrula. Bind değişikliğinde intended local address scope’unu kontrol et.
WEB-02.03 · Blue · Port, socket ve firewall ↗transport + local/remote IP/portConnection’ın uçlarını ve transport namespace’ini ayıran tuple.
WEB-02.03 · Port, socket ve firewall ↗endpointStateSentetik endpoint state; firewall conntrack state’i değil.
WEB-02.03 · Port, socket ve firewall ↗direction / observerState / knownFlowToy firewall observation koşulları; state peer’dan gelen güvenilir veri sayılmaz.
WEB-02.03 · Port, socket ve firewall ↗expectedRule / expectedDecisionAbstract rule eşleşmesi ve transit policy kararı.
WEB-02.03 · Port, socket ve firewall ↗listenerPresent / connectionOutcomePolicy allow’dan ayrı endpoint koşulu; possible bir gerçek handshake sonucu değildir.
WEB-02.03 · Port, socket ve firewall ↗Yolculuk DNS sonucundan sonra başlarBu dersin sorusu “seçilmiş IP datagram next hop’lardan nasıl geçer?”dir. Application notes.example.org için bir adres elde etmiş ve 198.51.100.200’ü seçmiş kabul edilir. Bu, DNS resolution’ın nasıl yapıldığını veya TCP/TLS connection’ın kurulduğunu göstermeyen açık başlangıç koşuludur. Warm connection ya da cache kullanımı yeni DNS exchange’i gerektirmeyebilir.
WEB-02.04 · Core · Bir paketin internet yolculuğu ↗Her router önce kendi local kararını verirHost route lookup next hop R1’i seçer; Ethernet frame R1’in ilgili interface MAC’ine gider. R1 frame’i alınca IP packet’in kendisine mi yoksa başka destination’a mı ait olduğunu ayırır. Forwarding gerekiyorsa kendi route table’ıyla çıkış interface ve next hop R2’yi seçer. Host’un default gateway kararı bütün yolu tek başına tarif etmez.
WEB-02.04 · Core · Bir paketin internet yolculuğu ↗Frame her link’te yeniden kurulurNormal path’te host→R1 link’inin source/destination MAC’leri R1→R2 ve R2→endpoint link’lerinde kullanılmaz. Router’ın egress interface MAC’i yeni frame’in source’udur; sonraki komşunun MAC’i destination’dır. Fixture Ethernet link’leri seçer; Internet’in her link’inin Ethernet olduğunu iddia etmez.
WEB-02.04 · Core · Bir paketin internet yolculuğu ↗TTL path sınırı; DNS TTL değilSeçilmiş IPv4 datagram TTL 4 ile host’tan çıkar. R1 forwarding’de 3’e, R2 forwarding’de 2’ye indirir. Bir router forwarding sırasında TTL’yi en az bir azaltır; fixture her router için bir seçer. Bu değer seconds cinsinden tarihsel field tanımına sahip olsa da normal hızlı forwarding’de hop limit etkisi gösterir.
WEB-02.04 · Core · Bir paketin internet yolculuğu ↗NAT branch’i explicit; destination arrival sınırlıNormal path translation yapmaz. Optional PAT branch R1’de source tuple’ı 203.0.113.5:45000 olarak değiştirir; remote destination aynı kalır. R2 ve endpoint bu path’te outside tuple’ı görür. Bu chosen mapping’dir; gerçek gateway state’i veya firewall verdict’i değildir. Return path’te reverse mapping ayrıca gerekir; response’un aynı fiziksel router dizisini izleyeceğini varsayma.
WEB-02.04 · Core · Bir paketin internet yolculuğu ↗Bozulan varsayım: ilk-hop bütün yolu doğrularHost’un doğru gateway MAC’ine frame göndermesi local delivery koşulunu destekler; R1’in doğru egress route’u, R2’nin state’i ve endpoint sonucu hakkında tam kanıt değildir. Güvenlik sınırını hop observer’ın görebildiği alanlardan kur.
WEB-02.04 · Red · Bir paketin internet yolculuğu ↗Bozulan varsayım: bütün header alanları kalıcıdırMAC pair link’e, translated tuple gözlem noktasına, TTL ise forwarding aşamasına bağlıdır. Bu scope’lar eşitlenirse aynı flow’nun iki gözlemi yanlışlıkla farklı olay sayılabilir. Ordinary destination’ın korunması da NAT olmayan seçilmiş branch’e aittir.
WEB-02.04 · Red · Bir paketin internet yolculuğu ↗Bozulan varsayım: ulaşmak application hakkıdırIP arrival gerekli bir network koşulu olabilir; resource ownership ve authorization hakkında hüküm vermez. Port 443 ve destination address de servis identity’sinin yerine geçmez. Application’ın kendi policy enforcement’ı devam eder.
WEB-02.04 · Red · Bir paketin internet yolculuğu ↗Hop ledger’ını observer scope’uyla okuArtifact her link’in frame source/destination MAC’ini ve IP TTL’sini gösterir. Hangi kayıt ingress, hangisi egress summary belirtildiği için TTL karşılaştırması anlamlıdır. Alanlar seçilmiş fixture values’dur, packet capture değildir.
WEB-02.04 · Blue · Bir paketin internet yolculuğu ↗Normal, translated ve expired karşılaştırmasıPozitif normal path’te üç link summary aynı IP tuple’ını taşır ve TTL 4→3→2 olur. PAT path’te ilk link inside, sonraki linkler outside source’u taşır. TTL 1 branch’inde downstream receiver state’i beklemede kalır; forward arrow yoktur.
WEB-02.04 · Blue · Bir paketin internet yolculuğu ↗Review’i hop ve katman şartlarıyla bitirRoute change review’si next hop ve egress scope’unu; NAT change review’si mapping ve return path’i; application change review’si endpoint permission’ını doğrular. Hepsini tek connectivity testiyle tamamlanmış sayma.
WEB-02.04 · Blue · Bir paketin internet yolculuğu ↗links.sourceMac / destinationMacHer link için yeni Ethernet adres çifti; Internet boyunca taşınan identity değil.
WEB-02.04 · Bir paketin internet yolculuğu ↗links.ttlO link’te gönderilen datagram’ın seçilmiş TTL’si; DNS cache TTL değil.
WEB-02.04 · Bir paketin internet yolculuğu ↗optionalPatYalnız R1’de uygulanan source address/port mapping.
WEB-02.04 · Bir paketin internet yolculuğu ↗applicationOutcomeIP arrival’dan sonraki application sonucu açıkça modellenmez.
WEB-02.04 · Bir paketin internet yolculuğu ↗İsim neden address’ten ayrılır?Bir application’ı sayısal address’e kalıcı olarak bağlamak adres değişimlerini kullanıcıya ve configuration’a taşır. DNS, resources için shared hierarchical namespace ve typed data sunar; her sorunun QNAME, QTYPE ve QCLASS bağlamı vardır. A sorusu address isteyebilir; başka type mail veya naming authority hakkında data verir. DNS network route veya application permission veritabanı değildir.
WEB-03.01 · Core · DNS namespace ve resolution ↗Label, domain, subdomain ve FQDNnotes.example.org. presentation form’unda soldan sağa notes, example, org ve root’un empty label’ı vardır. Ağacın hierarchy’si root → org → example → notes diye okunur. notes.example.org, example.org’un subdomain’idir; bu ilişki string içinde rastgele “example” geçmesine değil label sınırlarına dayanır. Domain adı host adı olarak kullanılabilir, ama her DNS node’u bir web host olmak zorunda değildir.
WEB-03.01 · Core · DNS namespace ve resolution ↗Namespace ile zone aynı scope değilDomain subtree ilişkisidir; zone authoritative data’nın yönetim scope’udur. Bir subdomain başka authoritative zone’a delegate edilmeden aynı parent zone’un içinde kalabilir. Bu yüzden her dot yeni server ya da ayrı security tenant demek değildir. Example.org zone’u bu fixture’da notes.example.org’u doğrudan barındırır.
WEB-03.01 · Core · DNS namespace ve resolution ↗Stub ve recursive resolver’ın işi ayrılırStub resolver genellikle bütün referral yolunu kendisi yürütemez; configuration’daki recursive resolver’dan final result ister. Application ile local resolver arasında mutlaka DNS packet yoktur; OS veya library interface’i kullanılabilir. Browser’ın ayrıca resolver ve cache tercihi bulunabilir. Buradaki tek stub→recursive yolunu bütün browser davranışlarının değişmez akışı gibi düşünme.
WEB-03.01 · Core · DNS namespace ve resolution ↗Recursive sonuç, iterative exchangesCold cache durumunda stub sorusu recursive resolver’a gelir. Resolver root’a query gönderir ve root referral’ı resolver’a döner. Ardından resolver TLD’ye ayrı query gönderir; TLD referral’ı yine resolver’a döner. Son query authoritative server’a gider ve answer resolver’a gelir. Root, query’yi TLD’ye ileten proxy değildir. Resolver topladığı sonuçla stub’a final result döndürür.
WEB-03.01 · Core · DNS namespace ve resolution ↗Result: answer, name error veya type yokluğuPositive cache örneği TTL 120 ile alınıp 30 seconds sonra değerlendirilir: selected remaining TTL 90’dır. Bu cache lookup local işlemidir ve DNS record TTL, IP packet TTL’den farklıdır. TTL burada source’a tekrar danışmadan data’nın cache’te kullanılabileceği üst sınırı anlatır; uygulama ve resolver politikaları cache’i daha erken bırakabilir.
WEB-03.01 · Core · DNS namespace ve resolution ↗Bozulan varsayım: yazılan name trusted identity’dirName bir resource seçme girdisidir; güven kararı role ve doğrulanan evidence ister. notes.example.org görünümü routing, authentication veya object access’in yerine geçmez. Recursive resolver’ın data’yı nereden aldığı ve seçilen resolver policy’si trust boundary’nin parçasıdır.
WEB-03.01 · Red · DNS namespace ve resolution ↗Bozulan varsayım: her subdomain bağımsız authorityName tree’ye bakıp zone cut, deployment ve application tenant boundary’sini aynı saymak yanlış scope yaratır. notes label’ı yeni delegated zone değildir; fixture example.org authority’sinde kalır. Subdomain relationship için label suffix gerekir, görünür benzer text yetmez.
WEB-03.01 · Red · DNS namespace ve resolution ↗Bozulan varsayım: boş answer name yokluğudurReferral, NOERROR/NODATA ve NXDOMAIN birbirinden farklıdır. Empty answer ile NS referral gelirse resolver’ın işi bitmemiş olabilir; SOA ve RCODE bağlamı result yorumunu değiştirir. Authoritative answer flag’i de cryptographic authenticity flag’i değildir.
WEB-03.01 · Red · DNS namespace ve resolution ↗Resolution trace role ve result taşırArtifact query sender/receiver, QNAME/QTYPE, referral zone ve final result özetlerini ayrı tutar. Recursive resolver’ın stub’a cevabı ile authoritative’ın resolver’a cevabı aynı role değildir. Trace fields özgün eğitim şemasıdır; DNS log ürünü veya hex packet capture gibi sunulmaz.
WEB-03.01 · Blue · DNS namespace ve resolution ↗Cold/warm ve negative baselineNormal cold path root ve TLD referral’larını followed eder; warm branch selected cache entry’den cevap verir. Root’a query görünmemesi cache veya delegation cache reuse nedeniyle olağan olabilir. Bu yokluk kendi başına DNS kullanılmadığını kanıtlamaz.
WEB-03.01 · Blue · DNS namespace ve resolution ↗İyi review tek bir hostname sonucu değildirNamespace incelemesinde absolute name ve label sınırlarını; authority incelemesinde zone kapsamını; resolver incelemesinde recursion ve cache kaynağını birlikte koru. Cold trace’te root referral’ı recursive resolver’a döner. TLD’ye yeni query’yi resolver gönderir; root bir application proxy gibi bu query’yi iletmez. Warm dalda ise fresh entry bulunduğu için bu upstream adımlar atlanır.
WEB-03.01 · Blue · DNS namespace ve resolution ↗labels / authoritativeZoneName tree ile managed zone scope’unu ayrı gösterir.
WEB-03.01 · DNS namespace ve resolution ↗coldTrace.from / to / kindQuery veya response’un hangi role’dan hangisine ulaştığını gösterir.
WEB-03.01 · DNS namespace ve resolution ↗rd / ra / aaRecursion request/availability ve authoritative-answer context’i; validation kanıtı değil.
WEB-03.01 · DNS namespace ve resolution ↗warmCache.remainingTtlSeçilmiş positive cache arithmetic’i; canlı clock veya OS cache değil.
WEB-03.01 · DNS namespace ve resolution ↗negativeCasesNXDOMAIN ile NOERROR/NODATA için farklı name/type conditions.
WEB-03.01 · DNS namespace ve resolution ↗Record’ın owner’ı ile data’sı aynı field değilResource Record, owner name’e ait type/class/TTL/RDATA bilgisini taşır. Owner “hangi name için?” sorusuna, type “nasıl data?” sorusuna cevap verir. Aynı owner, class ve type’a ait records bir RRset olarak ele alınır. notes.example.org. A RRset’inde iki IPv4 address bulunması bu iki kaydın iki ayrı domain olduğu anlamına gelmez.
WEB-03.02 · Core · DNS records ve aliasing ↗A ve AAAA: address family, transport’tan ayrıA RR, IN class’ında 32-bit IPv4 address; AAAA RR ise bir 128-bit IPv6 address taşır. Fixture notes.example.org için A 198.51.100.200 ve .201, AAAA 2001:db8:2::20 verir. A ve AAAA farklı RRsets’tir; yalnız A answer almak AAAA’nın var/yok olduğunu belirlemez.
WEB-03.02 · Core · DNS records ve aliasing ↗CNAME owner alias’tır, RDATA target name’dirdocs.example.org. CNAME edge.example.org. kaydında docs alias owner, edge target’tır. İkinci CNAME edge’i notes.example.org’a götürür. A sorusu için name server/resolver target’ı takip edip notes’un A RRset’ini elde edebilir; target aynı zone’da ise lookup local olabilir. Her alias link’i mutlaka yeni network exchange’i değildir.
WEB-03.02 · Core · DNS records ve aliasing ↗Alias zincirinin sonucu ile HTTP action’ı ayrıCNAME DNS name indirection’ıdır; URL scheme/path/port veya HTTP status/location field’ı taşımaz. docs name’i için address elde etmek browser’ın bir HTTP redirect response aldığı anlamına gelmez. Sonraki application request’in name/identity koşulları kendi katmanında devam eder.
WEB-03.02 · Core · DNS records ve aliasing ↗NS, MX, TXT, PTR ve SOA farklı işleri gösterirNS, zone/name authority için server name’i gösterir; server address’i ayrı A/AAAA data’sından bulunur. MX, mail exchange name’i ve preference taşır: 10, 20’den daha tercih edilir; bu uptime veya mail teslim garantisi değildir. MX ve NS target name’leri standard’a göre alias olmamalıdır. Fixture ns1/mail1/mail2 için direct A records verir.
WEB-03.02 · Core · DNS records ve aliasing ↗Bozulan varsayım: alias access hakkı taşırDNS alias name’i bir başka name’e bağlar; target resource için user veya tenant permission taşımaz. Benzer şekilde bir TXT string’in varlığı application’ın onu doğru consumer/policy ile işlediğini göstermediğinden “güvenli” sonucu için record dışında evidence gerekir.
WEB-03.02 · Red · DNS records ve aliasing ↗Bozulan varsayım: her name-valued record aynı aliasCNAME, NS, MX ve PTR hepsi name RDATA içerebilir fakat aynı resolution action’ını tetiklemez. PTR bir pointer’dır; MX mail routing tercihi; NS naming authority rolüdür. Hepsini CNAME gibi takip eden consumer record type contract’ını kaybeder.
WEB-03.02 · Red · DNS records ve aliasing ↗Bozulan varsayım: her chain terminal address üretirTarget missing, requested address type missing veya loop farklı conditions’dır. Alias owner’a A ekleyerek standard conflict’i “fallback” diye çözmek doğru değildir. Table review, aynı owner’daki record set’i ve alias path’i birlikte görmelidir.
WEB-03.02 · Red · DNS records ve aliasing ↗Record inventory’yi type ve scope’la kaydetOwner/class/type/TTL/RDATA alanları ve authoritative zone scope’u beraber tutulmalıdır. Alias answer ile terminal address RRset’ini ayrı kaydetmek chain’in hangi name’leri geçtiğini görünür kılar. PTR’nin reverse zone’u forward example.org zone’uyla aynı yönetimde olmak zorunda değildir.
WEB-03.02 · Blue · DNS records ve aliasing ↗Valid baseline ve conflict/loop negative checksNormal alias path docs→edge→notes, terminal A RRset’ine ulaşır; AAAA query ayrı family sonucunu verir. MX case’inde mail1 preference 10 seçilmiş önceliktir. NS/MX target’ları alias owner listesinde değildir. Local duplicate owner/type grup kontrolü gerçek resolver availability testi değildir.
WEB-03.02 · Blue · DNS records ve aliasing ↗Change review: consumers ve lifecycleBir alias değişimi terminal record, consumer’ın intended name’i, TLS/application identity koşulları ve cache/delegation lifecycle’ıyla beraber değerlendirilir. MX/TXT/NS değişiminin web endpoint adresiyle aynı işi yaptığı varsayılmaz.
WEB-03.02 · Blue · DNS records ve aliasing ↗records.owner / type / classRRset grouping ve type-specific data yorumunun anahtarı.
WEB-03.02 · DNS records ve aliasing ↗records.rdataType’a göre address, name, preference/exchange veya text list.
WEB-03.02 · DNS records ve aliasing ↗aliasQuery.expectedPathİki CNAME indirection’dan sonra terminal owner.
WEB-03.02 · DNS records ve aliasing ↗loopVariantBilinçli invalid inert data; hiçbir live resolver’a verilmez.
WEB-03.02 · DNS records ve aliasing ↗soaSummary.minimumRFC2308 negative cache semantics; zone-wide lower TTL bound değil.
WEB-03.02 · DNS records ve aliasing ↗Bir cevap ne kadar süre fresh kalır?TTL, recursive resolver’ın aldığı RRset’i kaç saniye fresh cache verisi olarak kullanabileceğini sınırlar. Örneğimizde notes.lab.example.org A cevabı t=0 anında TTL=120 ile alınır. t=30’da kalan süre 90; t=119’da 1; t=120’de 0’dır. Eşitlik sınırı önemlidir: 120 saniye tamamlandığında sıradan fresh-cache dalı artık seçilmez.
WEB-03.03 · Core · TTL, cache ve delegation ↗Olumsuz cevap da cache edilir; anahtarı farklıdırNXDOMAIN, bu yalın örnekte sorgulanan ismin olmadığını; NODATA ise ismin bulunduğunu fakat istenen type için RRset olmadığını anlatır. Alias zinciri olmayan missing.lab.example.org için NXDOMAIN anahtarı name/class; A kaydı bulunan v4only.lab.example.org için AAAA NODATA anahtarı name/type/class’tır. AAAA yokluğunu A yokluğu gibi taşımak bu kapsamı bozar.
WEB-03.03 · Core · TTL, cache ve delegation ↗Delegation, alt ağacı başka authority’ye bırakırexample.org parent zone’u lab.example.org için NS target olarak ns1.lab.example.org adını yayımlar. Zone cut’ın altında child zone kendi SOA ve apex NS verisine sahiptir. Resolver parent’ın referral cevabından sonra child authority’ye ayrı query gönderir; parent query’yi child’a proxy etmiş sayılmaz.
WEB-03.03 · Core · TTL, cache ve delegation ↗SOA timer’ları ikinci bir saat ailesidirSOA REFRESH, RETRY ve EXPIRE, secondary authoritative server’ın zone kopyasını primary ile güncel tutmasıyla ilgilidir. Artifact’te REFRESH=3600, RETRY=600, EXPIRE=86400 seçilmiştir; bunlar ürün default’u değildir. Başarılı SOA kontrolünde SERIAL aynıysa yeni transfer gerekmeyebilir ve refresh zamanı yeniden başlar. Bu, recursive A cache TTL’ini yeniden başlatmaz.
WEB-03.03 · Core · TTL, cache ve delegation ↗Serve-stale, fresh olmakla aynı şey değildirRFC 8767, authoritative refresh yapılamadığında elde tutulmuş expired verinin belirli politikayla kullanılmasına izin verir. Bu dersin özel dalında positive entry’nin yaşı 150, ilk TTL’i 120’dir; refresh girişimi başarısızdır ve serve-stale açıktır. Resolver eski adresi TTL=30 ile döndürür: entry hâlâ stale’dır, yeni authoritative başarı uydurulmaz. 30 saniye RFC’nin önerdiği değerdir, bütün resolver’ların zorunlu default’u değildir.
WEB-03.03 · Core · TTL, cache ve delegation ↗Değişiklik tek anda bütün cache’lere ulaşmazDelegation NS, nameserver adresi, CNAME ve terminal A/AAAA RRset’leri bağımsız cache ömürlerine sahip olabilir. Artifact’in 600/300/120 saniyeleri bu ayrımı görünür kılar. Yeni zone verisi hazır olduğunda daha önce alınmış fresh cevapların kalan süresi bir anda sıfırlanmaz; farklı resolver’lar farklı zamanlarda cevap almıştır.
WEB-03.03 · Core · TTL, cache ve delegation ↗Kırılan varsayım: yokluk bütün type’lara taşınırAAAA NODATA’yı name-level NXDOMAIN gibi yorumlayan uygulama, mevcut A verisini de yok sayabilir. Gerekli koşul, negative sonucun type kapsamının kaybolmasıdır; ağda özel bir işlem gerektirmez. Etki yanlış fallback veya meşru erişimin reddidir.
WEB-03.03 · Red · TTL, cache ve delegation ↗Kırılan varsayım: referral final cevaptırNS target veya glue adresini uygulamanın aradığı host adresi diye taşımak authority geçişini siler. Parent’taki nameserver adresi child verisine ulaşmak içindir; notların server adresini kanıtlamaz. Parent/child uyumsuzluğu çözümlemeyi kesebilir.
WEB-03.03 · Red · TTL, cache ve delegation ↗Kırılan varsayım: cevap varsa refresh başarılıdırServe-stale fallback availability sağlar fakat adresin hâlâ güncel olduğunu kanıtlamaz. Gerekli koşullar expired verinin tutulması, refresh yapılamaması ve izin veren policy’dir. Bu ayrım kaybolursa taşınmış servis için eski endpoint kullanımı gizlenebilir.
WEB-03.03 · Red · TTL, cache ve delegation ↗Cache kararını yeniden hesaplaArtifact’in receivedTtl ve elapsed alanlarından remaining=max(0,TTL−elapsed) hesapla. 119, 120 ve 150 sınırlarında fresh dalını seçmeden önce elapsed<TTL koşulunu kontrol et. Negative entry’de min(SOA TTL,MINIMUM) ve doğru anahtar ailesini uygula.
WEB-03.03 · Blue · TTL, cache ve delegation ↗Authority ve timer için ayrı kanıt tutBir değişiklik kaydında RR owner/type, parent zone, child zone, NS target ve gerekli glue alanlarını ayır. Cevap cache’ten mi authority’den mi geldi; seçilmiş örnekte yaşı kaç; stale policy kullanıldı mı sorularına ayrı cevap ver.
WEB-03.03 · Blue · TTL, cache ve delegation ↗Sınırları regression vakasına çevirPositive TTL equality, negative TTL equality, type-specific NODATA, farklı parent/child verisi ve izinli stale fallback ayrı vakalardır. TTL=0 kaydın sonradan retained stale olarak kullanılamaması da ayrı kontrol olmalıdır.
WEB-03.03 · Blue · TTL, cache ve delegation ↗positive.evaluationsAlınmış positive RRset için elapsed, remaining ve equality sınırındaki fresh kararı.
WEB-03.03 · TTL, cache ve delegation ↗negative.cacheKeyFieldsNXDOMAIN name/class; NODATA name/type/class kapsamı.
WEB-03.03 · TTL, cache ve delegation ↗delegationParent referral, bootstrap glue ve child answer’ın ayrı rolleri.
WEB-03.03 · TTL, cache ve delegation ↗secondaryAuthoritative secondary zone timer’ları; recursive TTL değil.
WEB-03.03 · TTL, cache ve delegation ↗serveStaleYalnız seçilen positive fallback: fresh=false, cevap TTL=30.
WEB-03.03 · TTL, cache ve delegation ↗Public suffix, son noktadan sonrası demek değildirPublic suffix, kayıtların altında ayrılabildiği ve dış bir listeyle belirlenen name kapsamıdır; her zaman tek label değildir. Registrable domain, seçilen suffix ile hemen önceki label’ı birleştirir. Örnekte yalnız org kuralını seçiyoruz: notes.example.org için suffix org, registrable domain example.org. Bu, tam PSL parser veya güncel liste snapshot’ı değildir.
WEB-03.04 · Core · Domain sınırları ve resolver seçenekleri ↗Domain, site ve origin farklı sorular sorarBurada HTTP(S) URL origin’ini scheme, host ve effective port ile karşılaştırıyoruz. Path’in değişmesi origin’i değiştirmez; api.example.org veya :8443 değişimi değiştirir. Bu örnekte browser site hesabı scheme ile registrable domain’i kullanır: iki https subdomain aynı site ama farklı origin olabilir. Port bu site hesabında yer almaz.
WEB-03.04 · Core · Domain sınırları ve resolver seçenekleri ↗Split-horizon: aynı query, seçilen başka viewSplit DNS, query’nin kaynağı veya başka policy özelliklerine göre farklı cevap üreten view’ları anlatır. Seçilmiş fixture public view’da notes.example.org A=198.51.100.200, employee view’da A=192.0.2.40 döndürür. İki adres de documentation adresidir; employee adı gerçek iç ağa bağlandığımız anlamına gelmez.
WEB-03.04 · Core · Domain sınırları ve resolver seçenekleri ↗DoH ve DoT aynı query’yi farklı taşıyabilirDoH, DNS query/response mesajlarını HTTPS exchange içinde taşır; DoT TLS üzerinden, varsayılan olarak TCP 853’te DNS taşır. DoT için port ancak tarafların başka bir port üzerinde anlaşmasıyla değişir; TCP 53’te plaintext DNS ile aynı kanal değildir. Bu örneğin normal dalları önceden kurulmuş ve authenticated kanalı kullanır; her query için yeni TCP/TLS handshake çizilmez.
WEB-03.04 · Core · Domain sınırları ve resolver seçenekleri ↗Şifreli hop’un karşı tarafı soruyu hâlâ görürDoH/DoT client ile seçilmiş resolver arasındaki taşıma kapsamını korur; resolver DNS name’i işlemek için soruyu görür. Resolver’ın authoritative server’lara giden bütün yollarının aynı şekilde encrypted olduğunu bu seçimden çıkaramazsın. DNSSEC validation da bu transport adlarının otomatik sonucu değildir.
WEB-03.04 · Core · Domain sınırları ve resolver seçenekleri ↗DNS adresi seçer; backend kimliğini kanıtlamazA/AAAA cevabı network endpoint adayı verir. Adreste CDN, reverse proxy, load balancer veya birden çok HTTP host bulunabilir; DNS’in gördüğü endpoint ile içteki uygulama server’ı aynı makine olmak zorunda değildir. notes.example.org ile api.example.org aynı 198.51.100.200 adresini kullansa bile URL origin’leri farklıdır.
WEB-03.04 · Core · Domain sınırları ve resolver seçenekleri ↗Kırılan varsayım: aynı IP aynı origin’dirIP adresini erişim yetkisi için URL origin yerine kullanan uygulama, aynı endpoint üzerinde farklı host’ları bir güven kapsamına toplayabilir. Gerekli koşul scheme/host/port karşılaştırmasının kaybolmasıdır. Shared IP yalnız network yerleşimi hakkında bilgi verir.
WEB-03.04 · Red · Domain sınırları ve resolver seçenekleri ↗Kırılan varsayım: resolver view evrenseldirEmployee view’daki cevap public resolver’da bulunmayabilir; farklı query context’leri farklı endpoint seçebilir. Context veya cache view ayrımı kaybolduğunda yanlış adres ya da beklenmeyen erişim kesintisi görülebilir. Bu durum bir name’in bütün ağlarda aynı cevabı vermesi gerektiği varsayımını bozar.
WEB-03.04 · Red · Domain sınırları ve resolver seçenekleri ↗Kırılan varsayım: encryption her güven kararını çözerŞifreli kanal yanlış seçilmiş resolver’a da kurulabilir; resolver soruyu görür ve kendi policy’siyle yanıtlar. Strict Privacy gereksinimiyle sessiz cleartext fallback’i karıştırmak seçilmiş koruma seviyesini kaybettirir. Authentication context ve fallback koşulları belirleyicidir.
WEB-03.04 · Red · Domain sınırları ve resolver seçenekleri ↗Boundary matrix’i URL’den hesaplaArtifact’te her URL’nin scheme, host ve effective port alanlarını karşılaştır. /book ile /other same-origin; api host’u ve 8443 port’u cross-origin; bunlar https site grubunda kalır. http değişimi schemeful site grubunu da değiştirir.
WEB-03.04 · Blue · Domain sınırları ve resolver seçenekleri ↗Resolver ve channel context’ini birlikte okuPublic DoH ve employee DoT dallarında query aynı name/type’dır; view ve transport context farklıdır. Her branch’te seçilen resolver, authentication koşulu, cache/view kapsamı ve plaintext fallback kararı ayrı kaydedilir.
WEB-03.04 · Blue · Domain sınırları ve resolver seçenekleri ↗DNS sonucundan sonra sınırı kaybetmeCandidate IP alındığında URL host, HTTPS reference identity ve HTTP authority bilgilerini koru. Başarıyı ayrı aşamalarda tanımla: çözümleme sonucu, ulaşılabilir bağlantı, kabul edilen server identity ve uygulama cevabı aynı kanıt değildir.
WEB-03.04 · Blue · Domain sınırları ve resolver seçenekleri ↗suffixContextYalnız org eğitim kuralı; tam PSL snapshot değil.
WEB-03.04 · Domain sınırları ve resolver seçenekleri ↗urlCasesOrdinary HTTP(S) origin ve schemeful site karşılaştırmaları.
WEB-03.04 · Domain sınırları ve resolver seçenekleri ↗viewsAynı query için seçilmiş iki view cevabı.
WEB-03.04 · Domain sınırları ve resolver seçenekleri ↗transportCasesWarm authenticated DoH/DoT koşulu ve strict unavailable sınırı.
WEB-03.04 · Domain sınırları ve resolver seçenekleri ↗endpointContextDNS candidate adresi URL host, authority veya identity kanıtı değildir.
WEB-03.04 · Domain sınırları ve resolver seçenekleri ↗Transport layer, host içindeki endpoint’i bulurIP, adreslenmiş host’lar arasında packet taşımaya yardım eder. TCP/UDP ise port alanlarıyla host içindeki transport endpoint’lerini ayırır; protokol de kimliğin parçasıdır. Artifact client 192.0.2.10:51000 ile server 198.51.100.200:443 arasındaki TCP endpoint pair’ini seçer. Aynı sayısal port’taki UDP endpoint’i bu TCP connection değildir.
WEB-04.01 · Core · TCP connection nasıl kurulur? ↗TCP connection, iki uçta tutulan durumdurConnection fiziksel bir hat kurmaz. TCP uçları state, sequence number, acknowledgment ve buffer bilgilerini tutarak ordered reliable byte stream sağlar. Bağlantı yönleri aynı IP path’ını kullanmak zorunda değildir; bu ders aradaki router’ları tekrar çizmek yerine iki transport ucuna odaklanır.
WEB-04.01 · Core · TCP connection nasıl kurulur? ↗Stream ile message sınırını ayırTCP application write sınırlarını receiver’ın read çağrılarına aynı biçimde taşımaz. Örnekte NO ve TE01 yazımları N, OTE ve 01 okumalarıyla alınabilir; byte sırası birleştirildiğinde NOTE01’dir. Application protocol message framing’i kendisi tanımlar. Bir TCP segment veya read parçasını tam HTTP message sayma.
WEB-04.01 · Core · TCP connection nasıl kurulur? ↗Birinci arrival: SYN server’a ulaştıBaşlangıçta client CLOSED, server LISTEN durumundadır. Client local active open ile SYN-SENT’e geçer ve seçilmiş ISN=1000 ile SYN hazırlar. SYN server’a ulaştığında server SYN-RECEIVED olur; client henüz server’dan bir mesaj almamıştır ve SYN-SENT kalır. Tek bir arrival iki uçta eşzamanlı ESTABLISHED üretmez.
WEB-04.01 · Core · TCP connection nasıl kurulur? ↗İkinci ve üçüncü arrival: iki uç farklı anda hazırServer, SYN+ACK ile kendi ISN=7000 değerini ve ACK=1001’i bildirir. Bu geçerli cevap client’a ulaştığında client ESTABLISHED olur, server ise final ACK’i henüz almamışsa SYN-RECEIVED kalır. Client server SYN’ini 7001 ile acknowledge eden ACK hazırlar; bu ACK server’a ulaştığında server ESTABLISHED olur.
WEB-04.01 · Core · TCP connection nasıl kurulur? ↗Eksik gözlem bir hata nedenini kanıtlamazFinal ACK arrival’ı bu örneğin trace’inde yoksa son modellenmiş durum client ESTABLISHED, server SYN-RECEIVED’dır. SYN+ACK arrival’ı yoksa client SYN-SENT kalır. Bunlar seçilmiş trace’in sınırlarıdır; packet loss, firewall policy, OS timeout veya server hatası teşhisi değildir. Gerçek TCP daha sonra retransmit, devam veya abort edebilir.
WEB-04.01 · Core · TCP connection nasıl kurulur? ↗Kırılan varsayım: ACK işin bittiğini söylerTransport ACK’i application receipt veya database commit yerine kullanan tasarım, iki farklı kabul aşamasını karıştırır. Gerekli koşul transport kanıtının iş sonucu diye yorumlanmasıdır. Etki yanıltıcı başarı bildirimi veya kaybolmuş işlem bilgisidir.
WEB-04.01 · Red · TCP connection nasıl kurulur? ↗Kırılan varsayım: her read bir message’dırWrite/read sınırlarını aynı kabul eden parser, meşru parçalanmış veya birleşmiş stream’i yanlış yorumlayabilir. Gerekli koşul application framing’in transport parçasına bağlanmasıdır. Sorun network saldırısı olmadan normal I/O davranışında da ortaya çıkar.
WEB-04.01 · Red · TCP connection nasıl kurulur? ↗Kırılan varsayım: bir uç hazırsa ikisi de hazırClient’ın SYN+ACK almasını server’ın final ACK almasıyla aynı an saymak state ownership’i kaybettirir. Bunun sonucu eksik trace’ten sahte çift yönlü başarı çıkarılmasıdır. Snapshot’ların her endpoint için ayrı tutulması bu hatayı görünür yapar.
WEB-04.01 · Red · TCP connection nasıl kurulur? ↗Endpoint pair ve state ownership’i takip etBaşlamadan protocol, client/server address ve port alanlarını yaz. Local active open sadece client state’ini değiştirir. SYN, SYN+ACK ve ACK arrival’larında hangi peer’in yeni bilgi aldığını ve hangi peer’in önceki state’te kaldığını anlat.
WEB-04.01 · Blue · TCP connection nasıl kurulur? ↗Sequence arithmetic’i bağımsız hesaplaClient SYN için 1000+1=1001, server SYN için 7000+1=7001 hesapla. Final ACK payload’sız olduğu için SEQ sonraki data başlangıcını tüketmez. Sequence space’i payload byte sayısıyla aynı sanma; SYN bu farkı gösterir.
WEB-04.01 · Blue · TCP connection nasıl kurulur? ↗Başarı kanıtını katmanına bağlaByte stream partition örneğinde read parçalarını birleştir; uygulama framing’i olmadan her parçaya message etiketi koyma. UDP karşılaştırmasındaki başarılı iki receive yalnız seçilmiş vaka; guaranteed delivery değildir.
WEB-04.01 · Blue · TCP connection nasıl kurulur? ↗tupleProtocol dahil local/remote endpoint pair; listener farklı kavram.
WEB-04.01 · TCP connection nasıl kurulur? ↗arrivals.flags/seq/ackSeçilmiş payload’sız handshake alanları; ACK flag yokken ack=null anlamsal boşluğu gösterir.
WEB-04.01 · TCP connection nasıl kurulur? ↗arrivals.sequenceSpaceUsedSYN 1, payload’sız pure ACK 0 konum tüketir.
WEB-04.01 · TCP connection nasıl kurulur? ↗observationalBranchesTrace sonundaki ayrı peer state’leri; gerçek timeout/error teşhisi değil.
WEB-04.01 · TCP connection nasıl kurulur? ↗framingComparisonTCP write/read parçalarıyla UDP datagram sınırı arasındaki fark.
WEB-04.01 · TCP connection nasıl kurulur? ↗Sequence sayısı byte konumudurHandshake sonrası client stream’i 1001’den başlıyor. ASCII NOTES! altı byte’tır; ilk segment SEQ=1001 ile NO taşır, sonraki segment SEQ=1003 ile TES! taşır. Aralıklar [1001,1003) ve [1003,1007)’dir. ACK=1007, 1007 dahil değil, ondan önceki bütün contiguous byte’ların alındığını bildirir.
WEB-04.02 · Core · TCP veri aktarımı ve kayıp yönetimi ↗Segmentation, application message’i yeniden tanımlamazTCP byte stream’i IP datagram’larında taşınan segmentlere böler; receiver sequence aralıklarından stream’i kurar. Segment boyutu MSS, path MTU, buffer ve implementation kararlarıyla değişebilir. Artifact’in iki/dört byte’lık segmentleri hesap kolaylığı içindir; gerçek internet MSS’i veya browser packetization sonucu değildir.
WEB-04.02 · Core · TCP veri aktarımı ve kayıp yönetimi ↗Retransmission yeni byte konumu üretmezSender henüz acknowledge edilmemiş byte’ları takip eder. Seçilmiş dalda NO arrival’ı görünmez, TES! görülür ve ACK ilerlemez. Local RTO expiry ile en eski unacknowledged aralık [1001,1003) yeniden gönderilir. Aynı NO aynı sequence konumlarını kullanır; yeni bir application message veya ek iki stream byte’ı yaratmaz.
WEB-04.02 · Core · TCP veri aktarımı ve kayıp yönetimi ↗Fast recovery ile timer aynı tetikleyici değildirRFC 5681’in temel fast retransmit profili, koşulları karşılayan üç duplicate ACK’i timer dolmadan kayıp işareti olarak kullanır. Tek bir aynı ACK’i bu eşikle eşitleme; window değişimi gibi ayrıntılar duplicate tanımını etkiler. SACK ve daha yeni loss recovery mekanizmaları başka bilgi kullanabilir; sahne bunları çalıştırmaz.
WEB-04.02 · Core · TCP veri aktarımı ve kayıp yönetimi ↗Flow control receiver’ı, congestion control yolu gözetirrwnd receiver’ın kabul edebileceği receive-window kapsamını; cwnd sender’ın congestion nedeniyle izin verdiği outstanding veri sınırını anlatır. Basit, unscaled snapshot’ta yeni data bütçesi max(0,min(rwnd,cwnd)−flightBytes)’tır. rwnd=6, cwnd=8, flight=2 ise 4; rwnd=16, cwnd=4, flight=2 ise 2 byte kalır.
WEB-04.02 · Core · TCP veri aktarımı ve kayıp yönetimi ↗Transport receipt ile application read ayrı olaydırReceiver bütün byte’ları TCP buffer’ına almışken uygulama henüz read etmemiş olabilir. ACK 1007 bu farkı kapatmaz. Scene’in son local adımı uygulamanın NOTES! byte’larını tüketmesini gösterir; network reply veya database commit değildir.
WEB-04.02 · Core · TCP veri aktarımı ve kayıp yönetimi ↗Kırılan varsayım: en büyük SEQ bütün önceki veri demektirSon segmenti görmek aradaki boşluğu kapatmaz. TES! önce geldiğinde prefix boş ve ACK 1001’dir. Sequence gap bilgisini kaybeden yorum yanlış teslim kanıtı üretebilir.
WEB-04.02 · Red · TCP veri aktarımı ve kayıp yönetimi ↗Kırılan varsayım: timeout hatanın yerini söylerRTO sender’ın yeni ACK bilgisi alamadığını gösterir; karşı application veya belirli router hakkında tek başına teşhis vermez. Gerekli koşul timer gözlemini neden kanıtı gibi kullanmaktır.
WEB-04.02 · Red · TCP veri aktarımı ve kayıp yönetimi ↗Kırılan varsayım: yüksek rwnd her zaman hızlı gönderimdirReceiver boş yer bildirse de cwnd veya başka sending koşulu daha sıkı olabilir. rwnd ile cwnd’yi aynı değişken gibi tutmak path baskısıyla receiver baskısını karıştırır.
WEB-04.02 · Red · TCP veri aktarımı ve kayıp yönetimi ↗Byte ledger’ı elle tamamlaSEQ, payload byte uzunluğu ve exclusive end’i hesapla. Reordered dalda önce held range’i yaz, ardından en küçük eksik konumu ACK olarak belirle; en büyük görülen konumu seçme.
WEB-04.02 · Blue · TCP veri aktarımı ve kayıp yönetimi ↗İki bütçeyi birlikte değerlendirArtifact’in receiver-limited, congestion-limited ve zero-window satırlarını hesapla. Seçilmiş window update yeni kapasiteyi sender’a ACK arrival ile taşır; receiver’ın local buffer tüketimi client bilgisini anında değiştirmez.
WEB-04.02 · Blue · TCP veri aktarımı ve kayıp yönetimi ↗Gözlem ile iş sonucunu ayırOrdered, reordered ve seçilmiş RTO recovery sonunda aynı NOTES! byte’larına ulaşılır; arrival sırası ve sender’ın bilgisi farklıdır. Application read’i ayrıca açıklayabilmek bu örneğin önemli sınırıdır.
WEB-04.02 · Blue · TCP veri aktarımı ve kayıp yönetimi ↗segmentsASCII payload için half-open sequence aralıkları.
WEB-04.02 · TCP veri aktarımı ve kayıp yönetimi ↗reorderedArrivalsBuffer’da görülen aralık ile contiguous prefix ayrımı.
WEB-04.02 · TCP veri aktarımı ve kayıp yönetimi ↗retransmissionAynı konumdaki byte’lar ve seçilmiş RTO backoff.
WEB-04.02 · TCP veri aktarımı ve kayıp yönetimi ↗sendBudgetCasesUnscaled byte snapshot’ında rwnd/cwnd/flight farkı.
WEB-04.02 · TCP veri aktarımı ve kayıp yönetimi ↗ackEvidenceTCP receipt uygulama read/commit kanıtı değildir.
WEB-04.02 · TCP veri aktarımı ve kayıp yönetimi ↗Established’tan çıkış iki yön için ayrı ilerlerTCP full-duplex’tir; bir uç kendi gönderimini bitirirken diğer yönden veri almayı sürdürebilir. CLOSE niyeti ile FIN’in peer’e ulaşması aynı olay değildir. Bu örnekte önceki veriler acknowledge edilmiş, client’ın sonraki sequence konumu 1007, server’ınki 7001 ve iki uç ESTABLISHED seçilmiştir.
WEB-04.03 · Core · Connection kapanışı ve UDP ↗FIN, senden artık data gelmeyeceğini söylerServer client FIN’ini ACK=1008 ile acknowledge eder. Bu ACK client’a geldiğinde client FIN-WAIT-2 olur. Server’ın application’ı henüz kendi gönderimini kapatmadıysa CLOSE-WAIT kalabilir ve response byte’ları gönderebilir. Half-close dalında server SEQ=7001 ile OK taşır; client’ın beklediği sonraki konum 7003’tür.
WEB-04.03 · Core · Connection kapanışı ve UDP ↗Ordinary kapanışta TIME-WAIT hâlâ durumdurNormal dalda server application local close yapar ve LAST-ACK’e geçer. Server FIN SEQ=7001 client’a geldiğinde client TIME-WAIT olur; ACK=7002 server’a ulaştığında server CLOSED olur. Client’ın final ACK gönderimi bütün yerel connection state’ini hemen silmez.
WEB-04.03 · Core · Connection kapanışı ve UDP ↗RST, graceful close’dan farklı bir bitiştirRST, geçerli connection context’inde kabul edilirse abort yolu izlenir; güvenilir bütün-buffer teslimi sağlayan graceful FIN exchange ile aynı değildir. Örnekte server application’ın local abort kararı seçilmiştir. Server local state’i kapanır; peer ancak varsayılan geçerli reset’i alınca kendi state’ini CLOSED yapar ve application’a abort bilgisi aktarır.
WEB-04.03 · Core · Connection kapanışı ve UDP ↗UDP datagram’ı TCP lifecycle taşımazUDP, source/destination port, length ve checksum alanlarından oluşan sekiz byte header ile datagram taşır. Örneğin ASCII PING payload’u dört byte, UDP length’i header dahil 12 byte’tır. IP header bu UDP length hesabına girmez. Bu özet checksum sayısı uydurmaz; pseudoheader ve tam datagram hesaplaması burada yoktur.
WEB-04.03 · Core · Connection kapanışı ve UDP ↗Datagram receipt uygulama işlemi değildirUDP normal dalında bir PING datagram’ının server’a başarılı gelişi seçilir. Application’ın onu local olarak okuması sonraki adımdır; server otomatik PONG üretmez. Tek başarılı geliş teslim garantisi veya bütün UDP trafiğinin davranışı değildir.
WEB-04.03 · Core · Connection kapanışı ve UDP ↗Kırılan varsayım: EOF bütün exchange’i bitirirPeer FIN’ini görünce kendi response yönünü de otomatik kapatan application, tasarlanmış half-close exchange’ini yarıda kesebilir. Gerekli koşul tek yöndeki EOF’un iki yönlü son durum sanılmasıdır.
WEB-04.03 · Red · Connection kapanışı ve UDP ↗Kırılan varsayım: reset bütün önceki işi geri alırTCP abort application’ın daha önce yaptığı işlemi kendiliğinden geri almaz. Karşı uç bazı byte’ları işlemiş olabilir; RST transport state’in bitişidir. Gerekli koşul transport abort’un transaction rollback gibi yorumlanmasıdır.
WEB-04.03 · Red · Connection kapanışı ve UDP ↗Kırılan varsayım: UDP checksum reliability’dirChecksum error detection ile teslim/sıralama garantisi farklıdır. Datagram checksum alanını görmek kayıp verinin tekrar gönderildiğini veya application’ın veriyi kullandığını kanıtlamaz.
WEB-04.03 · Red · Connection kapanışı ve UDP ↗FIN ledger’ında +1’i takip etClient FIN=1007 için ACK1008; server FIN=7001 için ACK7002 hesapla. Her arrival’da receiver’ın state’ini değiştir; ACK daha karşı peer’e ulaşmadan onun state’ini ilerletme.
WEB-04.03 · Blue · Connection kapanışı ve UDP ↗Graceful ve abort kanıtını ayırNormal dal FIN-WAIT-1/2, CLOSE-WAIT, LAST-ACK ve TIME-WAIT sırasını ordinary close için gösterir. Abort dalında aynı sıralama yoktur; seçilen geçerli reset farklı olaydır.
WEB-04.03 · Blue · Connection kapanışı ve UDP ↗UDP length ve kapsamını elle kontrol etPING’in ASCII byte uzunluğuna sekiz-byte header ekle; sonuç 12’dir. Scene datagram arrival ile local read’i ayırır; transport ACK, FIN veya otomatik application reply eklemez.
WEB-04.03 · Blue · Connection kapanışı ve UDP ↗normalFinFIN payload’sızken de sequence space 1 kullanır.
WEB-04.03 · Connection kapanışı ve UDP ↗normalStatesOrdinary active close için ayrı peer state’leri.
WEB-04.03 · Connection kapanışı ve UDP ↗timeWait2×MSL; seçilmiş süre OS default’u değil.
WEB-04.03 · Connection kapanışı ve UDP ↗halfCloseClient send kapalıyken response yönü açık kalabilir.
WEB-04.03 · Connection kapanışı ve UDP ↗udp.lengthUDP header+payload byte sayısı; IP header dahil değil.
WEB-04.03 · Connection kapanışı ve UDP ↗QUIC, UDP’nin üzerinde kendi transport’unu kurarQUIC v1 UDP datagram’larını carrier olarak kullanır fakat UDP’ye reliability eklenmiş basit bir socket etiketi değildir. Connection context, stream multiplexing, flow/loss/congestion control ve packet protection QUIC mekanizmalarıdır. UDP header port’ları taşır; QUIC bu payload’un içinde kendi packet/frame modelini kurar.
WEB-04.04 · Core · QUIC’in transport modeli ↗Handshake complete ile confirmed ayrı peer bilgisidirNormal sahne Initial ve Handshake CRYPTO mesajlarını aggregated flight özetiyle gösterir; gerçek packet sayısı, padding veya tam TLS message encoding’i değildir. Client server flight’ını alınca selected identity/Finished doğrulamasını yapar; kendi Finished’i de gönderildiğinde TLS completion bildirilir. Server client Finished’i alınca completion/confirmation kazanır.
WEB-04.04 · Core · QUIC’in transport modeli ↗Packet number, stream offset değildirArtifact’in PN10 packet’i stream0 offset0’da NO; PN11 aynı stream’in offset2’sinde TES; PN12 stream4 offset0’da OK taşır. Packet number belirli packet-number space içindeki transmission’ı, offset ise belirli stream’deki byte yerini anlatır. Initial, Handshake ve Application Data space’leri ayrıdır; aynı küçük sayı farklı space’lerde aynı olay değildir.
WEB-04.04 · Core · QUIC’in transport modeli ↗Loss recovery bilgi taşır; eski packet’i kopyalamazACK frame, alınan packet range’lerini bildirir; PN11–12’nin ACK’i PN10’u kabul etmiş sayılmaz. RFC 9002 time-threshold örneğinde daha büyük PN12 acknowledge edilmiştir. RTT 80 ms ve 9/8 çarpanı threshold’u 90 ms yapar; geçen 100 ms bu sınırı aşar. Sender PN10’u lost ilan eder ve gereken stream byte’larını yeni PN13 packet’inde offset 0’dan taşır.
WEB-04.04 · Core · QUIC’in transport modeli ↗Bağımsız stream, sınırsız bağımsız kaynak demek değildirQUIC receiver hem stream hem connection flow-control limit’leri bildirir. Örnekte stream0 limit5, stream4 limit2, connection MAX_DATA7’dir; final offset toplamı 5+2=7. Aynı stream offset’lerinin recovery’si flow credit’i ikinci kez tüketmez. Congestion ve wire byte yükü yine dikkate alınır; bu, retransmission’ın bedelsiz olduğu anlamına gelmez.
WEB-04.04 · Core · QUIC’in transport modeli ↗Web’de kazanım, multiplexing’i transport’a görünür kılmaktırHTTP/2 application stream’leri tek TCP byte stream’i üzerinden multiplex eder; TCP için bu farklı request sınırları görünmez. Eksik TCP byte aralığı o connection’ın ilerleyen ordered teslimini bekletebilir. HTTP/3 aynı HTTP semantics’i QUIC’e map eder; QUIC stream’leri loss recovery’nin kapsamına görünür hale gelir.
WEB-04.04 · Core · QUIC’in transport modeli ↗0-RTT erken data’dır; once-only işlem sözü değildirÖnceki resumption context’i varsa client bazı application verisini yeni handshake tamamlanmadan gönderebilir; server bunu kabul etmek zorunda değildir. 0-RTT replay riski özellikle application side effect’leri için değerlendirilir. QUIC transport state’inin frame duplicate işlemesi, application’ın business işini bir kez yapmasını otomatik sağlamaz.
WEB-04.04 · Core · QUIC’in transport modeli ↗Kırılan varsayım: PN ACK application delivery’dirQUIC packet ACK’i stream’in tüm önceki offset’lerinin contiguous veya uygulamaca işlenmiş olduğunu kanıtlamaz. Gap içeren stream, ACK edilmiş sonraki packet’lere rağmen bekleyebilir.
WEB-04.04 · Red · QUIC’in transport modeli ↗Kırılan varsayım: her encrypted QUIC packet aynı güven düzeyindedirInitial protection ile negotiated Handshake/1-RTT protection’ı aynı confidentiality koşulu saymak doğrulanmış peer state’ini yanlış erkene taşır. TLS completion ve QUIC confirmation farklı endpoint bilgisi taşır.
WEB-04.04 · Red · QUIC’in transport modeli ↗Kırılan varsayım: early data side effect’leri bir kez yapar0-RTT içinde repeated effect’e hassas işlem kabul etmek replay riskini application katmanına taşır. Gerekli koşul operation’ın tekrarında istenmeyen etki ve izin veren early-data policy’dir.
WEB-04.04 · Red · QUIC’in transport modeli ↗İki numara ailesini ayrı hesaplaPacket ledger’da PN10/11/12/13 aynı Application Data space’indedir. Stream0 offset0+2 ve offset2+3 ile NOTES; stream4 offset0+2 ile OK kurulur. PN13 yeni transmission olsa da offset0’daki NO aynı information’dır.
WEB-04.04 · Blue · QUIC’in transport modeli ↗Complete/confirmed sınırını izleClient peer Finished’i doğrulamış olsa da kendi Finished gönderimi ayrı koşuldur. Server ancak peer Finished geldikten sonra selected completion/confirmation kazanır; client selected HANDSHAKE_DONE arrival’ında confirmed olur.
WEB-04.04 · Blue · QUIC’in transport modeli ↗Performance ve early policy için koşul yazStream bağımsızlığıyla connection kaynaklarını birlikte değerlendir. MAX_DATA7’ye ulaşılması veya congestion baskısı iki stream’in de yeni veri gönderimini etkileyebilir; üst application bağımlılıkları ayrıca vardır.
WEB-04.04 · Blue · QUIC’in transport modeli ↗handshakeEndpoint-local completion ile selected HANDSHAKE_DONE confirmation ayrımı.
WEB-04.04 · QUIC’in transport modeli ↗streamPacketsYeni packet number ile aynı stream offset information recovery’si.
WEB-04.04 · QUIC’in transport modeli ↗ackRangesInclusive packet ranges; stream prefix veya business outcome değil.
WEB-04.04 · QUIC’in transport modeli ↗flowControlUnique stream offset toplamı connection credit’e katılır.
WEB-04.04 · QUIC’in transport modeli ↗earlyPolicyRepeated effect’e hassas işi local olarak early data’dan çıkarır.
WEB-04.04 · QUIC’in transport modeli ↗HTTP semantics tek başına kanal güveni değildirHTTP method, status ve header kuralları, kiminle konuştuğunu veya byte’ların yolda gizli kaldığını kendiliğinden kanıtlamaz. https URI, seçilen origin’e güvenli iletişim ve certificate doğrulaması ister; URL’deki harfi değiştirmek bu mekanizmayı tek başına kurmaz. Burada TLS 1.3 ile certificate-authenticated HTTPS kanalını inceliyoruz.
WEB-05.01 · Core · TLS’in sağladığı güven ve cryptography ↗Üç garanti farklı sorulara cevap verirConfidentiality, korunan application byte’larının kanaldaki gözlemciye açıklanmamasını; integrity, değişikliklerin kabul edilmeden fark edilmesini; authentication, negotiated anahtarların doğrulanan peer’e bağlanmasını anlatır. Bu üçünü tek “encrypted” etiketiyle geçmek, public key’i bulunan herhangi bir peer’i beklediğin server sanmana neden olabilir.
WEB-05.01 · Core · TLS’in sağladığı güven ve cryptography ↗Symmetric key her yönün traffic’ini korurTLS 1.3 record protection için AEAD kullanır. Seçilmiş c-app-0 alias’ı client’ın write key’ini, server’ın aynı yön için read key’ini temsil eder; s-app-0 karşı yöndür. Bunlar farklı direction/phase scope’larıdır. Certificate public key’iyle her HTTP byte’ını encrypt etmek bu model değildir.
WEB-05.01 · Core · TLS’in sağladığı güven ve cryptography ↗Asymmetric roller: agreement ve signatureSeçilmiş yeni connection’da X25519 ephemeral key shares shared secret hesaplamasına girer; private share karşıya gönderilmez. HKDF, shared input ve handshake context’inden ayrı traffic secrets/keys türetir. Long-term certificate key’i ise CertificateVerify signature’ı ile handshake context’ine possession proof bağlar. CA certificate signature’ı farklı signer ve farklı içerik üzerindedir.
WEB-05.01 · Core · TLS’in sağladığı güven ve cryptography ↗Record geldi, fakat henüz teslim edilmediScene korunan bir record’ın server’a arrival’ını, server’ın local AEAD doğrulamasını ve application’a local teslimini ayrı adımlar yapar. Record header/ciphertext/tag byte’larının görülmesi, plaintext’in kabul edildiği anlamına gelmez. Integrity-failure dalında seçilmiş AEAD check başarısızdır; plaintext application’a verilmez ve kanal kullanılabilir kabul edilmez.
WEB-05.01 · Core · TLS’in sağladığı güven ve cryptography ↗HTTPS’in sınırı endpoint ve uygulamadırTLS terminator application byte’larını okuyabilir. Reverse proxy’de termination seçilirse browser→proxy ve proxy→upstream ayrı kanal/policy sorularıdır; ilk kanal ikinci hop’un korunduğunu kanıtlamaz. TLS ayrıca destination IP, trafik zamanı ve boyutları bütünüyle gizlemez; padding bazı gözlemleri azaltabilir ama anonymity garantisi değildir.
WEB-05.01 · Core · TLS’in sağladığı güven ve cryptography ↗Kırılan varsayım: encrypted yeterli authority’dirEncryption olsa da intended hostname/path doğrulanmamışsa aranan service identity sonucu kurulamaz. Gerekli hata, kanalı bir public key’e bağlayıp o key’in beklenen service ile ilişkisini atlamaktır.
WEB-05.01 · Red · TLS’in sağladığı güven ve cryptography ↗Kırılan varsayım: decrypt çıktısı kabul edilmiş veridirProvisional plaintext’i verification final olmadan işlemek, integrity failure sonrası oluşmuş application side effect’i geri alamayabilir. Gerekli koşul incomplete authentication çıktısının trusted input gibi tüketilmesidir.
WEB-05.01 · Red · TLS’in sağladığı güven ve cryptography ↗Kırılan varsayım: TLS iş kuralını garanti ederGeçerli kanal, permission kontrolü eksik uygulamayı düzeltmez. Endpoint plaintext ve termination politikası da TLS wire protection’ın dışında ayrı güven sınırlarıdır.
WEB-05.01 · Red · TLS’in sağladığı güven ve cryptography ↗Key-role ledger’ını okuCertificate signing key, ephemeral agreement key ve directional traffic key alias’larını eşleştir. c-app-0’ın server’da read key olmasını, aynı alias’ın karşı yön için seçilmemesini açıkla.
WEB-05.01 · Blue · TLS’in sağladığı güven ve cryptography ↗Receipt, verification ve delivery’yi ayırNormal dalda NOTES byte’ları ancak local check başarıyla bitince application’a teslim edilir. Failure dalında arrival vardır ama verified plaintext ve application read yoktur.
WEB-05.01 · Blue · TLS’in sağladığı güven ve cryptography ↗Garanti tablosunu product kararına bağlaConfidentiality, integrity ve server authentication için gereken koşulları yaz; kullanıcı identity, authorization ve business outcome hücrelerini ayrı tut. Bu ayrım “TLS var, her şey tamam” yorumunu sınırlar.
WEB-05.01 · Blue · TLS’in sağladığı güven ve cryptography ↗keyRolesSecret byte içermeyen farklı key sorumlulukları.
WEB-05.01 · TLS’in sağladığı güven ve cryptography ↗recordBir direction/phase için inert protected record özeti.
WEB-05.01 · TLS’in sağladığı güven ve cryptography ↗casesVerification ve teslim için seçilmiş koşullar.
WEB-05.01 · TLS’in sağladığı güven ve cryptography ↗guaranteeScopeChannel garantisinin application kararına uzanmadığı sınır.
WEB-05.01 · TLS’in sağladığı güven ve cryptography ↗Certificate bir signed binding taşırX.509 certificate, subject/public key, issuer, validity ve extensions gibi bilgileri CA signature’ıyla bağlayan veri yapısıdır. Private key certificate’ın içine konmaz. Public leaf certificate’ı görmek, karşı peer’in o private key’e sahip olduğunu tek başına göstermez; TLS’de CertificateVerify bunu handshake context’ine bağlayan ayrı proof’tur.
WEB-05.02 · Core · Certificate chain ve hostname validation ↗CA authority yerel trust policy’den başlarClient’ın anchor-atlas public key’ini trusted kabul etmesi yerel input’tur. Server aynı root’u gönderdi diye yeni bir authority doğmaz. Self-signed olması da tek başına trust sonucu vermez; root/anchor’in neden ve hangi scope için trusted olduğu verifier policy’sine aittir.
WEB-05.02 · Core · Certificate chain ve hostname validation ↗TLS list ile doğrulanan path aynı yön değildirTLS Certificate list’inde sender’ın end-entity certificate’ı ilk gelir; devamındakiler önceki certificate’ı doğrudan certify etmeye yönelik SHOULD düzenidir. Örneğimiz [leaf-atlas,int-atlas] gönderir. Local anchor karşıya gönderilmez; bulunması zaten verifier context’ine bağlıdır. Leaf’in issuer alias’ı intermediate subject’ine, intermediate issuer’ı anchor name’ine bağlanır.
WEB-05.02 · Core · Certificate chain ve hostname validation ↗Signature tek başına path validation değildirIssuer signature, validity zamanı, CA basicConstraints/key usage, applicable name/policy constraints ve critical extensions farklı kontrollerdir. Leaf için selected TLS-server purpose da önemlidir; extendedKeyUsage varsa kullanım sınırını daraltabilir. Trust anchor’a isim zinciri çizmek bütün bu kontrollerin yapıldığı anlamına gelmez.
WEB-05.02 · Core · Certificate chain ve hostname validation ↗Hostname beklenen adı certificate’tan almazClient URL https://api.example.org/ için reference DNS-ID api.example.org kurar. Server’ın SAN dNSName’lerinden biri bununla eşleşmelidir; seçilmiş ASCII exact karşılaştırma case-insensitive’dır. CNAME target veya bağlı IP, ordinary web örneğinde reference DNS-ID’yi kendiliğinden yeniden adlandırmaz. Path başarılı olduğu halde hostname mismatch olabilir.
WEB-05.02 · Core · Certificate chain ve hostname validation ↗IP ve IDN için aynı string oyunu yetmezURL literal IP içeriyorsa reference IP-ID olur; iPAddress SAN’ın address octet’leriyle exact match gerekir. DNS SAN’da "192.0.2.10" string’i bulunması iPAddress SAN yerine geçmez. Aynı IP’ye resolve olmak farklı DNS name’leri eşitlemez.
WEB-05.02 · Core · Certificate chain ve hostname validation ↗Kırılan varsayım: sunulan root trusted’dırGelen root certificate’ın kendisini imzalaması, verifier’ın o key’i neden trusted kabul ettiğini açıklamaz. Gerekli hata server-supplied veriyi bağımsız trust-anchor policy’si yerine koymaktır.
WEB-05.02 · Red · Certificate chain ve hostname validation ↗Kırılan varsayım: chain başarılı, hostname önemsizSeçilmiş trusted CA’nın başka service için verdiği certificate, URL’deki service adını otomatik doğrulamaz. Gerekli koşul reference identity check’ini path success nedeniyle atlamaktır.
WEB-05.02 · Red · Certificate chain ve hostname validation ↗Kırılan varsayım: signature possession proof’turCertificate CA signature’ı public key binding’ini kapsar; live peer’in private key’i kontrol ettiğini bu veri tek başına göstermez. CertificateVerify handshake signature’ı ve Finished ayrı kanıttır.
WEB-05.02 · Red · Certificate chain ve hostname validation ↗İki chain yönünü çizTLS list leaf-first’tür; seçilen validation path intermediate→leaf, local anchor ise input’tur. Issuer/subject alias ilişkilerini ve signature check koşullarını ayrı işaretle.
WEB-05.02 · Blue · Certificate chain ve hostname validation ↗SAN match matrix’ini elle hesaplaExact ASCII name, tek-label wildcard, apex ve daha derin name satırlarını karşılaştır. Case farkının eşleşmeyi bozmadığını, wildcard label sayısının ise sonucu değiştirdiğini gör.
WEB-05.02 · Blue · Certificate chain ve hostname validation ↗Accept gate bir conjunction’dırPath, hostname ve peer key-proof koşulları birlikte gerekir. Scene yalnız certificate/path/name dilimini tamamlar: normal final adımında bile live TLS key proof bu sahnenin dışında kalır.
WEB-05.02 · Blue · Certificate chain ve hostname validation ↗anchorPeer’in gönderdiği veriden ayrı local trust input’u.
WEB-05.02 · Certificate chain ve hostname validation ↗certificatesGerçek certificate byte’ları olmayan field alias’ları.
WEB-05.02 · Certificate chain ve hostname validation ↗tlsSentListTLS list’in seçilmiş leaf-first sırası.
WEB-05.02 · Certificate chain ve hostname validation ↗prospectivePathAnchorToTargetAnchor ayrı input olmak üzere validation yönü.
WEB-05.02 · Certificate chain ve hostname validation ↗nameMatrixModern SAN-only, bounded ASCII/IP örnekleri.
WEB-05.02 · Certificate chain ve hostname validation ↗Yeni TLS connection’ın seçilmiş yoluTLS-over-TCP sahnesi, TCP connection zaten kurulmuşken başlar. Yeni TLS 1.3 connection’da X25519 ephemeral share, server certificate authentication, ALPN ve 1-RTT kullanılır. Client certificate, PSK resumption, 0-RTT, HelloRetryRequest ve post-handshake authentication bu akışa dahil değildir. TLS handshake başlatmak, yeni bir TCP handshake yapıldığı anlamına gelmez.
WEB-05.03 · Core · Handshake, SNI ve ALPN ↗ClientHello teklif, ServerHello seçimdirClientHello supported_versions, cipher suites, supported groups/key_share ve signature_algorithms gibi teklifleri taşır. Seçilmiş normal örnekte TLS1.3, TLS_AES_128_GCM_SHA256, X25519 ve ed25519 capability’leri vardır; key-share byte’ı yerine alias kullanılır. TLS1.3 cipher suite AEAD/hash pair’i seçer, certificate signature veya key-exchange algoritmasının bütününü tek isim içinde seçmez.
WEB-05.03 · Core · Handshake, SNI ve ALPN ↗ServerHello sonrası protected handshakeEncryptedExtensions, certificate-authenticated dalda Certificate ve CertificateVerify, ardından server Finished gelir; ServerHello sonrasındaki handshake messages handshake traffic key’leriyle korunur. ClientHello ve ServerHello ordinary TLS1.3 dalında bu handshake protection’ın dışında kalır. EncryptedExtensions’de ALPN selection gibi server parameters yer alır; TLS1.2 ALPN çiziminin ServerHello yerleşimini aynen taşıma.
WEB-05.03 · Core · Handshake, SNI ve ALPN ↗Transcript, key proof ve Finished aynı karar değildirCertificateVerify, context string ve handshake transcript hash’i içeren signature input’u ile selected certificate private key possession’ını handshake’e bağlar. Finished, ilgili handshake traffic secret’tan türetilen key ile transcript üzerine MAC sağlar. Bu ikisi CA certificate signature’ı değildir; peer’in listesi, negotiated parameter history ve key confirmation farklı kanıtlardır.
WEB-05.03 · Core · Handshake, SNI ve ALPN ↗SNI service seçimine yardım ederSNI server_name extension’ının host_name alanı client’ın istediği DNS hostname’i bildirir; server certificate/configuration seçiminde kullanabilir. api.example.org bir routing hint’tir, authenticated user veya doğru hostname certificate kanıtı değildir. Server bu ad için configuration seçse bile client bağımsız reference identity validation yapar.
WEB-05.03 · Core · Handshake, SNI ve ALPN ↗ALPN bir connection için tek protocol seçerClient h2 ve http/1.1 teklif eder; seçilmiş server preference h2’yi ortak seçenek olarak bulur ve EncryptedExtensions’de h2 seçimini bildirir. Bu negotiation yeni TCP connection açmaz; hangi application parser/semantics’in bu TLS connection üzerinde kullanılacağını belirler. h2 teklif etmek veya port443’e bağlanmak h2’nin seçildiği anlamına gelmez.
WEB-05.03 · Core · Handshake, SNI ve ALPN ↗ECH ordinary TLS1.3’ten ek koşul isterRFC9849 ECH için public ClientHelloOuter ve şifreli ClientHelloInner ayrımını tanımlar. Uygun config/public key ve client/server desteğiyle accepted ECH, gerçek service’in SNI ve hassas tekliflerini Inner’da koruyabilir; Outer public_name ve dış bağlantı bilgileri yine vardır. TLS1.3 demek her ClientHello’nun gizlendiği anlamına gelmez.
WEB-05.03 · Core · Handshake, SNI ve ALPN ↗Kırılan varsayım: Hello seçimi authentication’dırKey share ve cipher seçimini görüp service identity doğrulanmış saymak, path/name/CertificateVerify/Finished gate’lerini atlar. SNI configuration seçimi de aynı hatayı onarmaz.
WEB-05.03 · Red · Handshake, SNI ve ALPN ↗Kırılan varsayım: Finished varlığı doğruluğudurFinished mesajı geldiği halde MAC doğrulanmamışsa key confirmation tamamlanmış değildir. Gerekli hata received transcript verisini validation sonucu gibi kullanmaktır.
WEB-05.03 · Red · Handshake, SNI ve ALPN ↗Kırılan varsayım: privacy extension her şeyi gizlerECH extension’ın görünmesi acceptance veya validated intended service sonucunu tek başına vermez. Outer context, IP ve traffic pattern bilgi sınırları ayrıca vardır.
WEB-05.03 · Red · Handshake, SNI ve ALPN ↗Flight ledger’ını local state’e bağlaCH offer→server local selection→SH client arrival→protected flight receipt→client validation/Finished→server receipt/validation sırasını izle. Encrypted flight arrival’ında henüz peer identity doğrulaması tamamlanmaz.
WEB-05.03 · Blue · Handshake, SNI ve ALPN ↗Offer/selection matrix’ini hesaplaVersion/cipher/group kesişimi ile ALPN kesişimini ayrı değerlendir. Server preference içindeki ilk ortak ALPN normalde h2’dir; no-overlap satırında selectedProtocol null kalır.
WEB-05.03 · Blue · Handshake, SNI ve ALPN ↗Visibility tablosunda koşulu koruOrdinary CH/SH açık context’i, sonraki encrypted handshake’i ve accepted ECH Inner korumasını ayrı işaretle. Outer için hidden=false demek bütün Inner alanlarının her deploy’da korunduğunu iddia etmez.
WEB-05.03 · Blue · Handshake, SNI ve ALPN ↗clientHelloClient capability ve routing/protocol teklifleri.
WEB-05.03 · Handshake, SNI ve ALPN ↗serverHelloSeçilmiş cryptographic context; ALPN burada değildir.
WEB-05.03 · Handshake, SNI ve ALPN ↗serverProtectedFlightRecord/segment sayısı olmayan handshake message sırası.
WEB-05.03 · Handshake, SNI ve ALPN ↗peerGatesReceipt ile local validation/completion ayrımı.
WEB-05.03 · Handshake, SNI ve ALPN ↗echAccepted ECH için açık selected config/topology sınırı.
WEB-05.03 · Handshake, SNI ve ALPN ↗Yeni bağlantıda ne yeniden kurulur?Atlas Notları aynı service’e ikinci bağlantıyı açıyor. TCP connection reuse varsa açık bağlantıdaki HTTP request için yeni TLS handshake gerekmeyebilir; session resumption ise gerçekten yeni TLS connection kurmanın başka yoludur. Önceki socket’in devamı değildir. Önceki handshake’ten elde edilmiş bir PSK yeni negotiation’a input olur, yeni transcript ve yeni traffic secret’lar ortaya çıkar. Bu yüzden “önceki encryption key’i tekrar kullandık” açıklaması mekanizmayı yanlış kurar.
WEB-05.04 · Core · Key exchange ve session resumption ↗PSK, ticket ve binder farklı şeylerdirİlk certificate-based connection’ın başarıyla tamamlandığını ve server’ın NewSessionTicket ile opaque ticket alias’ı verdiğini düşünelim. Client, ticket’ı ona bağlı secret PSK, KDF hash’i, önceki service identity context’i ve lifetime bilgisiyle ilişkilendirir. Sonraki ClientHello ticket identity ve binder taşır; secret PSK açıkça gönderilmez. Ticket, server’daki state’i bulmaya yarayan veri veya protected state olabilir; burada bu iki tasarımdan birinin gerçek encoding’i varsayılmaz.
WEB-05.04 · Core · Key exchange ve session resumption ↗psk_dhe_ke ile psk_ke neden eşdeğer değil?Client psk_key_exchange_modes ile desteklediği seçenekleri ilan eder. Selected psk_dhe_ke case’inde iki peer yeni X25519 share üretir; PSK ile yeni asymmetric shared secret key schedule’a birlikte girer. Mode label içindeki “dhe” tarihsel isimdir: güncel TLS 1.3 specification asymmetric key establishment ve extension-defined KEM seçeneklerini de ayırır. Bu örnek özellikle X25519 seçer; bütün implementation’ların aynı group’u seçtiğini iddia etmez.
WEB-05.04 · Core · Key exchange ve session resumption ↗Ticket uygun değilse full handshake mümkündürArtifact’te ticket lifetime 3600 saniye, client-side elapsed age 900 saniyedir. “Ticket kullanılabilir” koşulu yaşın lifetime’ı aşmaması, KDF hash uyumu ve service context uygunluğuyla hesaplanır; server acceptance ayrıca selected policy input’udur. Bu sayılar normatif minimum veya browser default’u değil, küçük fixture değerleridir. Ticket SNI context’i, önceki certificate’in yeni service identity için geçerli olması şartından ayrı tutulamaz. Current ticket_lifetime üst sınırı 7 gündür; zero lifetime hemen discard gerektirir ve server daha kısa acceptance policy uygulayabilir. Bounded fixture’nin positive lifetime karşılaştırması bu ek kuralları kaldırmaz.
WEB-05.04 · Core · Key exchange ve session resumption ↗0-RTT ayrı bir acceptance kararıdırResumption 0-RTT’yi zorunlu kılmaz. Early data, ServerHello’dan önce PSK-derived ayrı key context’iyle gönderilebilen data’dır; ordinary 1-RTT data’yla aynı forward secrecy ve bağlantılar arası non-replay garantilerini taşımaz. AEAD doğruluğu message’ın daha önce hiç işlenmediğini kanıtlamaz. Bu farkı öğrenmek için tekrar gönderim deneyi gerekmez: application policy’nin hangi aşamada side effect’e izin verdiğini takip etmek yeterlidir.
WEB-05.04 · Core · Key exchange ve session resumption ↗Hangi secret hangi geçmişi etkiler?Security review’da tek “private key sızdı” cümlesi yeterli değildir. Certificate signing key, resumption PSK, ticket protection key ve ephemeral key farklı ilişkiler kurar. Selected psk_ke case’inde daha sonra PSK disclosure varsayımı ordinary application secrecy değerlendirmesini değiştirir; fresh X25519 ile combined mode için aynı sonuç doğrudan çıkmaz. Bunun koşulu ephemeral değerlerin düzgün olması, tekrar kullanılmaması ve gereksiz tutulmamasıdır.
WEB-05.04 · Red · Key exchange ve session resumption ↗Resumption context’i permission context’i değildirTicket’ın seçildiğini görmek browser kullanıcısının hâlâ aynı role sahip olduğunu göstermez. Bir uygulama aynı connection üzerinde çok sayıda resource request alabilir; ticket service context’ine bağlı olsa da resource owner ve güncel policy başka layer’dadır. Logout, tenant değişimi veya account disable sonrasında authorization’ın güncel server-side state’e bakması gerekir.
WEB-05.04 · Red · Key exchange ve session resumption ↗Encrypted early data için gerekli koşul0-RTT için integrity valid olmasının yeterli sayılması kırılan varsayımdır: veri kabul edilebilir biçimde korunmuş olabilir ama processing freshness ayrıca değerlendirilir. Distributed serving’de bir zone’un state’i bütün zone’ların ortak acceptance state’i değildir. Retry ve failure recovery de normal application duplication üretebilir; application level idempotency, operation identity ve deduplication policy’nin kapsamı açık olmalıdır.
WEB-05.04 · Red · Key exchange ve session resumption ↗Mode ve ticket policy’yi gözlenebilir yapConfiguration review’da negotiated mode, selected group, ticket lifetime policy ve early-data policy ayrı alanlar olmalıdır. “TLS 1.3 açık” bilgisi psk_dhe_ke seçildiğini kanıtlamaz. PSK-only mode’un kabul edilip edilmediği implementation ve service profile kararına bağlıdır; seçilen güven gerekçesini documentation’a yaz. Ticket cache secret material içerdiği için gerçek PSK, ticket veya binder’ı diagnostic log’a dökmek yerine sınırlı kategoriler ve kısa ömürlü correlation kullan. Deployment BCP RFC9325 §3.4 fresh share ile psk_dhe_ke seçimini önerir; ticket protection key lifecycle ve sınırlı ticket validity de aynı güven gerekçesinin parçalarıdır. Bu deployment guidance’ın eski RFC8446 atıfları, current protocol kuralları için burada kullanılan RFC9846’nın yerine geçmez.
WEB-05.04 · Blue · Key exchange ve session resumption ↗Early-data profile’i application davranışına bağlaAtlas için initial policy 0-RTT’de mutating action’ları bekletmektir. İlerde read-only bir sınıf açılacaksa yalnız method listesi yetmez: side effect, authorization freshness, retry handling, server topology ve acceptance coordination açıklanmalıdır. Anlamlı default, belirsiz işlemi ordinary verified channel aşamasına bırakmaktır; TLS resumption performance ile early business execution ayrı ayarlar olarak kalır.
WEB-05.04 · Blue · Key exchange ve session resumption ↗Current profile ve sınırları koruRFC9846 aynı TLS 1.3 version’ını koruyarak RFC8446’nın yerini alır. Fresh key_share değerlerinin connection’lar arasında tekrar kullanılmaması current requirement’tır. Artifact’in X25519 seçimi current asymmetric mode’a küçük bir örnektir; KEM negotiation, actual HKDF bytes ve hardware key lifecycle burada hesaplanmaz. PSK binder ve Finished sonuçları açık koşul girdileridir, cryptographic verification yapılmış gibi sunulmaz.
WEB-05.04 · Blue · Key exchange ve session resumption ↗ticketIdentity alias ile secret PSK farklıdır; lifetime ve service context client eligibility koşullarıdır.
WEB-05.04 · Key exchange ve session resumption ↗casesSelected mode, fresh share, certificate branch ve tamamlanma farklı sonuçlardır.
WEB-05.04 · Key exchange ve session resumption ↗earlyPolicyMutating operation kendi local policy gate’inde bekler; early message gönderilmez.
WEB-05.04 · Key exchange ve session resumption ↗HTTPS hangi iki peer arasında?Atlas Notları https://notes.example.org adresinden açılır. Browser’ın HTTPS kontrolü URL’deki service identity için karşısındaki TLS endpoint’i doğrular ve o bağlantının HTTP data’sını korur. Endpoint bir CDN olabilir; service adına yetkilendirilmiş CDN’in certificate’i doğrulanması backend application’ın aynı TLS connection’ın peer’i olduğunu göstermez. Origin authority ve fiziksel server programı aynı kavram değildir.
WEB-05.05 · Core · HTTPS ve TLS termination zinciri ↗Termination plaintext’i bir endpoint’e açarTLS termination, gelen protected record’un endpoint’te doğrulanıp application-readable HTTP message’a dönüşmesidir. CDN, header ve body’yi burada okuyabilir; caching veya routing bu içerik üzerinde çalışır. TLS terminator’ın plaintext’e erişmesi integrity failure değildir, bu architecture’ın beklenen trust boundary’sidir. İçerik CDN’e açık olmamalıysa çözüm sadece ikinci TLS arrow çizmek olamaz; application confidentiality tasarımı ayrıca gerekir.
WEB-05.05 · Core · HTTPS ve TLS termination zinciri ↗HTTP upstream seçimi browser’da görünmezNormal case’te üç hop TLS kullanır. Plaintext-upstream case’inde son Reverse proxy → Application hop’u HTTP’dir; browser → CDN yine HTTPS kalır. Browser kendi resource fetch’inin https scheme’ini görür ve backend network segment’ini mixed content olarak değerlendirmez. Server-side HTTP hop için confidentiality ve peer authentication güvencesi TLS’den gelmez; “iç ağ” ifadesi bunu otomatik olarak sağlamaz.
WEB-05.05 · Core · HTTPS ve TLS termination zinciri ↗HSTS gönderilecek URL’yi önceden değiştirirHSTS browser’ın domain adına bağlı cached policy’sidir. Hatasız HTTPS response üzerinden alınan Strict-Transport-Security header’ı max-age boyunca host’u kaydeder; insecure HTTP üzerinden gelen header dikkate alınmaz. Browser known host için http URL’yi yüklemeden önce https yapar. Explicit port 80, 443 olur; başka explicit port aynı kalır. Bu işlem server’ın 301 response’unu bekleyen redirect değildir; network request’ten önce local URL değişimidir. Known HSTS host’ta certificate veya secure-transport error varsa browser’ın devam etmek için warning’i aşma seçeneği sunması beklenmez; local policy güvenli olmayan connection’ı kabul ederek uygulanmaz.
WEB-05.05 · Core · HTTPS ve TLS termination zinciri ↗Mixed content başka bir resource request’tirHTTPS document içindeki http script URL’si, browser’ın ikinci ve insecure resource request’ini tanımlar. Güncel standardın bu örneğinde script ve fetch/XHR gibi blockable request’ler default policy ile engellenir. Belirli img, audio ve video request’leri upgradeable kategorisinde https URL’ye çevrilebilir. Ancak image-set/srcset/picture context’i ve IP-address host için aynı sonucu her image’a yayamayız. CORS ayrı bir policy’dir; URL’nin upgrade edilmesi CORS kontrolünün geçtiğini göstermez. “Passive güvenli, active tehlikeli” ayrımı güncel algoritmanın yerine geçmez.
WEB-05.05 · Core · HTTPS ve TLS termination zinciri ↗Kilidin arkasındaki trusted endpoint’lerRisk review’da browser’ın doğruladığı CDN’in body’yi okuyabildiğini yazmak gerekir. TLS confidentiality network observer’a karşıdır, seçilmiş peer’e karşı değildir. Hop-B ve hop-C’nin de TLS olması CDN’i veya reverse proxy’yi plaintext’ten uzaklaştırmaz. Trusted processor sayısı arttığında secret handling, log policy ve data retention scope’u da büyür; her TLS success business trust kararı olmaz.
WEB-05.05 · Red · HTTPS ve TLS termination zinciri ↗Scheme label’i channel evidence değildirApplication external URL’yi https olarak biliyor olabilir ama kendi direct connection’ı HTTP olabilir. Bu olağan termination architecture’ında approved edge’in external scheme bilgisini güvenli context olarak taşıması ayrı tasarım konusudur. Sadece string https görmek internal peer’in certificate doğrulandığını veya body’nin son hop’ta korunmuş olduğunu kanıtlamaz.
WEB-05.05 · Red · HTTPS ve TLS termination zinciri ↗HSTS ve mixed content’in farklı kapsamıHSTS host policy’nin önceden bilindiği varsayımına dayanır; dynamic policy ilk insecure request’i geçmişe dönük koruyamaz. Mixed-content policy ise bir secure document’ın subresource context’ine bakar. HSTS’yi tüm server-to-server hop’ları encrypt eden mekanizma veya mixed content’i bütün insecure link’leri engelleyen blanket policy saymak iki farklı control’ü yanlış birleştirir.
WEB-05.05 · Red · HTTPS ve TLS termination zinciri ↗Her hop için bir ledger tutAtlas ledger’da client, server, scheme, reference identity, certificate-check outcome ve key alias ayrı sütunlardır. Normal case’te CDN notes.example.org için browser’a server’dır; proxy.example.org için TLS client’tır. Reverse proxy app.example.org için başka client’tır. Server-only certificate profile seçildiği için upstream server’ın client identity doğruladığını iddia etmeyiz; mTLS istenirse ayrı certificate ve policy koşulları gerekir.
WEB-05.05 · Blue · HTTPS ve TLS termination zinciri ↗Browser policy state’ini ayrı doğrulaHSTS evidence bir header string’inden fazlasıdır: secure receipt, host scope ve non-expired cache entry gerekir. Fixture expiry 1000+600=1600 olarak hesaplanır; now=1300’de active, now=1600’de expired olur. includeSubDomains için label boundary kontrolü, sibling ve parent’ın kapsam dışı kalması, explicit port 80 dönüşümü ve custom port preservation anlamlı regression noktalarıdır.
WEB-05.05 · Blue · HTTPS ve TLS termination zinciri ↗Subresource’ları gerçek context’leriyle sınıflandırMixed-content review bir URL listesi kadar request destination ve initiator bilgisini de ister. Document scheme, image versus imageset, host türü ve selected CORS mode sonucu değiştirir. Secure document’ın default policy’siyle http script’i engellemek, CSP upgrade-insecure-requests gibi ek policy’nin bulunmadığı bu case’in outcome’udur. İleride ek policy varsa upgrade ve block sıralaması current Fetch integration ile birlikte yeniden değerlendirilir.
WEB-05.05 · Blue · HTTPS ve TLS termination zinciri ↗hopsBağımsız peer, reference identity ve key context; secret bytes bulunmaz.
WEB-05.05 · HTTPS ve TLS termination zinciri ↗hstsCasesCached dynamic policy host/expiry/port koşullarıyla local URL’yi değiştirir.
WEB-05.05 · HTTPS ve TLS termination zinciri ↗mixedCasesDefault secure-document profile’da destination ve initiator outcome’u ayırır.
WEB-05.05 · HTTPS ve TLS termination zinciri ↗Önce resource ile adresini ayırDuru kitap kataloğunda Atlas kaydını açıyor. Resource, uygulamanın bu kayda verdiği kavramsal kimliktir; URL onu adresleyen identifier’dır. Server aynı kaydı HTML sayfası veya JSON representation olarak sunabilir. URL metnini görünce hangi bytes’ın döneceğini, kaydın varlığını veya Duru’nun erişim hakkını henüz bilmiyoruz.
WEB-06.01 · Core · URL anatomy ve resource addressing ↗Bir URL’yi parçalara ayırhttps://books.example:8443/catalog/atlas?lang=tr&tag=network&tag=web#summary örneğini soldan sağa oku: scheme, authority içindeki host/port, path, query ve fragment. Ayırıcıların hangi component’i başlattığı anlamı belirler; her şeyi slash’a göre kesmek yeterli değildir.
WEB-06.01 · Core · URL anatomy ve resource addressing ↗Scheme hangi adres ailesini seçer?Scheme adresin nasıl yorumlanacağını belirleyen ilk component’tir. http ve https web resource erişimi için kullanılır; mailto gibi başka scheme’ler aynı transport veya aynı path yapısını vaat etmez. Her geçerli URL’nin “browser bir HTTP GET yapacak” anlamına geldiğini varsayma.
WEB-06.01 · Core · URL anatomy ve resource addressing ↗Host ve port, path’in parçası değildirHost, authority içinde hedefi adlandırır; domain name veya IP address biçimleri olabilir. DNS’in role’ü domain name’i çözümlemekle ilgilidir. Parser’ın hostname alanını üretmesi DNS cevabını veya bir server process’in varlığını kanıtlamaz.
WEB-06.01 · Core · URL anatomy ve resource addressing ↗Path bir uygulama adresidir/catalog/atlas, authority’den sonra gelen hierarchical path’tir. Slash’larla ayrılan segments uygulamanın route sözleşmesine girdi olabilir. Bunun server diskinde catalog klasörü ve atlas dosyası olması gerekmez: route handler bir database kaydından response üretebilir.
WEB-06.01 · Core · URL anatomy ve resource addressing ↗Query pair’leri kayıpsız okuQuery ? ile başlar; URL standardı bu component’in bütün uygulamalarda aynı business anlamını taşımasını şart koşmaz. Key=value&key=value, URLSearchParams’ın işlediği yaygın form representation’ıdır. Application hangi key’in geçerli, hangi değerin kabul edilebilir olduğunu ayrıca belirler.
WEB-06.01 · Core · URL anatomy ve resource addressing ↗Fragment hangi tarafta kalır?#summary bir fragment’tir. Normal HTTP resource request’inin target’ına gönderilmez; client, representation içindeki ilgili bölümü seçmek için kullanabilir. Bu URL’den origin-form path/query türetirsek /catalog/atlas?lang=tr&tag=network&tag=web elde ederiz; #summary dışarıda kalır.
WEB-06.01 · Core · URL anatomy ve resource addressing ↗Encoding, metni taşıma biçimidirPercent-encoding bir byte’ı % ve iki hexadecimal digit ile temsil eder. Unicode metnin önce hangi encoding ile byte’a dönüştüğü önemlidir. q=notlar ı örneğinde URLSearchParams, UTF-8 representation’ını ve form serialization’ını kullanır; artifact sonucu q=notlar+%C4%B1 olur.
WEB-06.01 · Core · URL anatomy ve resource addressing ↗Absolute adres ve relative referenceAbsolute URL scheme ve gerekli component’leriyle kendi parsing bağlamını sağlar. /catalog/atlas gibi relative reference ise base olmadan hangi host’a ait olduğunu söylemez. new URL("/catalog/atlas") TypeError üretir; aynı reference geçerli bir HTTPS base ile çözülebilir.
WEB-06.01 · Core · URL anatomy ve resource addressing ↗Trust hangi işlemde kuruluyor?Bir security incelemesinde önce input’u tüketen katmanı bul: browser parser mı, server router mı, application validation mı? Aynı URL farklı amaçlar için işlenebilir. “Text looks like our domain” ifadesi parser sonucunun veya policy kararının yerine geçmez.
WEB-06.01 · Red · URL anatomy ve resource addressing ↗Representation kaybı karar kaybına dönüşebilirİki tag değerinden yalnız birini tutmak veya fragment’ı request-target sanmak, işlem hakkında yanlış sonuç üretir. Önce ham reference’ı, parser sonucunu ve application schema sonucunu ayrı gözlemler olarak kaydet; birbirinin yerine yazma.
WEB-06.01 · Red · URL anatomy ve resource addressing ↗Aynı parser, açık application policyURL’yi standard parser ile çözümle; izin verilen scheme, destination veya port gibi uygulama gereksinimlerini structured sonuç üstünde değerlendir. Parser’ın başarılı olması allow kararı değildir. Query key/value schema’sı da ayrı doğrulanır.
WEB-06.01 · Blue · URL anatomy ve resource addressing ↗Log ve link üretiminde veri sınırını koruQuery’ye secret veya kişisel veriyi gereksizce koyma; URL farklı log, history ve telemetry yüzeylerinde görünebilir. Bu fixture yalnız public katalog ve etiket bilgisi taşır. Log için gerekli alanları seç; bütün URL’yi varsayılan olarak kalıcı identity kaydı yapma.
WEB-06.01 · Blue · URL anatomy ve resource addressing ↗inputYerel olarak parse edilen normal katalog adresi.
WEB-06.01 · URL anatomy ve resource addressing ↗expected.host / expected.hostnameHost port’u içerir; hostname içermez.
WEB-06.01 · URL anatomy ve resource addressing ↗expected.tagsRepeated query values getAll ile korunur.
WEB-06.01 · URL anatomy ve resource addressing ↗expected.httpOriginFormPath/query adayı; fragment hariç, gerçek request yok.
WEB-06.01 · URL anatomy ve resource addressing ↗formEncodingForm serialization ve raw değere geri dönüş.
WEB-06.01 · URL anatomy ve resource addressing ↗Hostname hangi adı, domain hangi bölümü anlatır?https://app.example.com/catalog adresinin hostname’i app.example.com’dur. app altındaki label, DNS adının yapısına aittir; domain sözcüğü tek başına hangi seviyeyi kastettiğini söylemez. Configuration incelemesinde full hostname, public suffix ve registrable domain’i ayrı adlandır.
WEB-06.02 · Core · Domain, site ve origin ↗Origin, scheme/host/port sınırıdırNormal HTTP(S) URL’lerde origin karşılaştırması scheme, host ve normalized port üzerinden yapılır. https://app.example.com/catalog ile https://app.example.com/notes?lang=en#new aynı origin’dedir: path, query ve fragment bu sınırı değiştirmez.
WEB-06.02 · Core · Domain, site ve origin ↗Schemeful site daha geniş bir sınırdırBu HTTP(S) domain örneklerinde schemeful site, scheme ile registrable domain’i birlikte kullanır. https://app.example.com ve https://api.example.com için site https://example.com’dur. Host’lar farklı olduğundan same-origin değiller; aynı HTTPS registrable domain altında oldukları için same-site’tırlar.
WEB-06.02 · Core · Domain, site ve origin ↗Same-site, same-origin yetkisi vermezOrigin browser isolation için temel sınırdır; site ise örneğin SameSite cookie değerlendirmesinde kullanılan başka bir gruplamadır. Same-site iki uygulamanın birbirinin DOM’una veya response body’sine serbestçe erişebileceğini söylemez. Hangi operation’ın hangi browser policy’sine tabi olduğunu açıkça seç.
WEB-06.02 · Core · Domain, site ve origin ↗Opaque origin’i "null" metnine indirgemeBütün origin’ler HTTP(S) tuple değildir. Opaque origin, kendi internal identity’si olan bir değerdir; serialization’ı null olabilir. Ayrı iki opaque origin’in aynı null metnine serialize olması, aynı internal origin olduklarını göstermez.
WEB-06.02 · Core · Domain, site ve origin ↗Karşılaştırmanın hangi sınırı ölçtüğünü sorAynı domain ailesi ifadesi teknik sonuç için yetersizdir. app ve api host’ları same-site olup cross-origin olabilir; port değişikliği de origin’i ayırabilir. Bir bulguyu açıklarken URL pair’i, normalized origin’i ve site sonucunu birlikte göster.
WEB-06.02 · Red · Domain, site ve origin ↗Sınıflandırma ile gerçek erişimi ayırSame-origin tablosundan server’ın ne döndürdüğünü veya kullanıcının neye authorized olduğunu çıkarma. Bu ders URL tuple’larını hesaplıyor; browser read-policy, actual request veya authz sonucu ölçmüyor.
WEB-06.02 · Red · Domain, site ve origin ↗Origin policy’sini tam tuple ile tanımlaNormal HTTP(S) origin policy’sinde scheme, host ve normalized port’un tamamı gereksinime uygun olmalıdır. Sadece registrable domain’i kontrol etmek same-origin expectation’ı karşılamaz. Raw URL’de path’in değişmesi ise tek başına origin değişikliği değildir.
WEB-06.02 · Blue · Domain, site ve origin ↗PSL ve exception bağlamını kaydetProduction site hesabında güncel, uygun PSL verisini kullanan platform/library davranışını tercih et. Son iki label kısayolunu bu dersin sınırlı example fixture’ından genelleme. IP, localhost ve opaque context’lerin kuralları ayrıca değerlendirilir.
WEB-06.02 · Blue · Domain, site ve origin ↗baseOrigin / baseSiteBaşlangıç adresi için iki farklı boundary.
WEB-06.02 · Domain, site ve origin ↗cases.sameOriginHTTP(S) normalized tuple eşitliği.
WEB-06.02 · Domain, site ve origin ↗cases.sameSiteExplicit registrable domain fixture ile schemeful site eşitliği.
WEB-06.02 · Domain, site ve origin ↗opaqueComparisonAynı serialization, ayrı supplied identity; browser enforcement değil.
WEB-06.02 · Domain, site ve origin ↗Resolution için iki input gerekirDuru’nun katalog sayfasındaki notes link’i tek başına bir absolute adres değildir. Sonuç reference ve base URL’nin birlikte işlenmesinden doğar. Base https://books.example/catalog/lesson.html?lang=tr#old ise notes, https://books.example/catalog/notes olarak çözülür.
WEB-06.03 · Core · URL resolution ↗Son slash current directory’yi değiştirirBase /catalog/lesson.html ile /catalog/lesson/ aynı current directory’yi sağlamaz. İlki için last slash /catalog/ sonunda olduğundan notes /catalog/notes olur. İkincisinde trailing slash korunur ve notes /catalog/lesson/notes olur.
WEB-06.03 · Core · URL resolution ↗Root ve parent reference’ları izle/notes root-relative reference’tır. Base’in origin context’ini kullanır, path directory’sini kullanmaz: /catalog/lesson.html veya /catalog/lesson/ base’leriyle sonuç https://books.example/notes olur. Buradaki root, server diskindeki root directory anlamına gelmez.
WEB-06.03 · Core · URL resolution ↗Query-only ve fragment-only aynı işlemi yapmaz?lang=en yeni query’yi seçerken base’in scheme/authority/path’ini korur. Base’teki #old fragment’ı yeni reference taşımadığı için korunmaz. Sonuç https://books.example/catalog/lesson.html?lang=en olur.
WEB-06.03 · Core · URL resolution ↗Document base’i ve failure sınırıHTML Document’ın base URL’si çoğunlukla document context’inden gelir; href taşıyan ilk base element varsa standardın frozen base URL kuralı devreye girer. document.baseURI ile address bar’ın metninin her durumda aynı olduğunu varsayma. about:blank/srcdoc gibi context’lerin fallback kuralları da vardır.
WEB-06.03 · Core · URL resolution ↗Final URL hangi context’ten geldi?Link incelemesinde reference’ı tek başına raporlamak eksiktir. notes metni iki farklı base’te iki farklı pathname seçebilir. Reference, declared/effective base ve normalized final URL üçlüsünü birlikte kaydet.
WEB-06.03 · Red · URL resolution ↗Local failure’ı network failure diye yazmaInvalid base TypeError’ı transport timeout veya HTTP404 değildir. Hangi aşamanın tamamlanmadığını belirt: parsing sonucu yoksa request construction için destination yoktur.
WEB-06.03 · Red · URL resolution ↗Base’i açık veri olarak ele alRelative adres kullanan code’da base’in nereden geldiğini açık tut: configuration, Document context veya caller input. Aynı fixture set’i, base’in trailing slash’lı/slash’sız biçimi ve root/query/fragment reference’larıyla çalıştır.
WEB-06.03 · Blue · URL resolution ↗Kanıtı doğru aşamaya bağlaBir resolution kaydının üreticisi URL parser’dır: aynı reference ve aynı base verilince elde edilen href veya error type karşılaştırılır. Document base’i öğrenmek için gerçek Document context’i, resource’un yüklenmesini öğrenmek için fetch/response gözlemi gerekir. Yerel parser sonucu bu diğer aşamaların kanıtı değildir.
WEB-06.03 · Blue · URL resolution ↗cases.referenceÇözümlenecek normal link metni.
WEB-06.03 · URL resolution ↗cases.baseBu işlem için declared absolute context.
WEB-06.03 · URL resolution ↗cases.expectedHrefNative URL constructor’ının doğrulanacak serialization’ı.
WEB-06.03 · URL resolution ↗invalidBase.destinationFailure sonrası null; eski başarıya geri dönülmez.
WEB-06.03 · URL resolution ↗HTTP hangi anlaşmayı kurar?Duru Atlas library’de bir not açar. Browser request ile hangi resource üzerinde ne istediğini anlatır; Atlas Application request’i yorumlar ve response ile sonucu bildirir. HTTP application-level bir protocol’dür. DNS, connection ve TLS bu alışverişin taşınmasına yardım eder; notun business anlamını veya Duru’nun permission’ını kendi başlarına belirlemez.
WEB-07.01 · Core · HTTP request ve response anatomy ↗Request: niyet, target ve contextÖrneğin request-line’ı GET /notes/atlas-1?view=summary HTTP/1.1 biçimindedir. GET operation intent’i, path/query request-target’ı, HTTP/1.1 ise syntax version’ı gösterir. Direct origin request’te kullanılan origin-form path ve varsa query içerir. Host: library.atlas.example ilgili authority bilgisini taşır; scheme connection context’iyle birlikte anlaşılır.
WEB-07.01 · Core · HTTP request ve response anatomy ↗Response: karar, metadata, contentAtlas’ın HTTP/1.1 200 OK status-line’ında numeric status asıl anlamı taşır. OK reason phrase açıklayıcıdır; application logic onu başarı anahtarı olarak kullanmamalıdır. Response headers Content-Type ve Content-Length gibi metadata verir. Boş satırdan sonraki Atlas note bu örneğin content’idir: ASCII olduğu için 10 karakter aynı zamanda 10 byte’tır.
WEB-07.01 · Core · HTTP request ve response anatomy ↗Server hazırladı; Browser henüz almadıSahne önce Browser’daki URL’yi, sonra Application’a ulaşmış request’i ve en son Browser’a ulaşmış response’u gösterir. Local route seçimi ağ paketi değildir. Resource state Application’ın içindeki öğretim fixture’ıdır; ayrı database call varsayılmaz.
WEB-07.01 · Core · HTTP request ve response anatomy ↗Protocol alanı ile trusted karar ayrı yerde oluşurRequest-target ve client headers routing veya content negotiation için girdidir. Protected resource seçimi yine Application’ın permission kararını gerektirir. Host veya URL’de Atlas yazması request’in belirli bir kullanıcıdan geldiğini kanıtlamaz; aynı şekilde 200 tek başına doğru access control kanıtı değildir.
WEB-07.01 · Red · HTTP request ve response anatomy ↗Görünümün formatını gerçek wire sanmaAraç bir HTTP/2 response’u okunur status/header satırlarına çevirebilir. Bu faydalı görüntü protocol parser’ının aynısı değildir. Yanlış model, control data’yı veya body sınırını formatlar arasında hatalı taşıyan incelemelere yol açabilir.
WEB-07.01 · Red · HTTP request ve response anatomy ↗Request ve response’u aynı exchange içinde okuİlk inceleme sırası method, target, status, relevant headers ve completion’dır. Request context’i olmadan HEAD body’sini veya POST 200 content’ini yanlış yorumlayabilirsin. Gerçek HTTP eşlemesi sürümün connection/stream kurallarına dayanır; application gözlemlerinde method, target, işlem zamanı ve ölçüm noktası da aynı exchange’e bağlanmalıdır. Bu artifact kendi request/response pair’ini verir; özel bir correlation header’ı tanımlamaz.
WEB-07.01 · Blue · HTTP request ve response anatomy ↗Manual okuma: sınırları işaretle, sonra anlam verInert pair’de ilk satırı, her header field’ını ve CRLF CRLF sınırını işaretle. Request tarafında body olup olmadığını belirt; response content’inin hangi method/status bağlamında geldiğini söyle. Browser URL’sindeki fragment ile target’taki query’yi ayrı not et.
WEB-07.01 · Blue · HTTP request ve response anatomy ↗http11CRLF ile ayrılmış özgün inert request/response; replay komutu değildir.
WEB-07.01 · HTTP request ve response anatomy ↗semanticProjectionH2/3 semantic alanları; binary frames içermez.
WEB-07.01 · HTTP request ve response anatomy ↗browserStatusResponse ulaşmadığında unknown/null; serverPreparedStatus’tan kopyalanmaz.
WEB-07.01 · HTTP request ve response anatomy ↗selectorYalnız öğretim observation ilişkisinin tutarlılık seçimi.
WEB-07.01 · HTTP request ve response anatomy ↗Method resource’a yöneltilen bir niyettirGET mevcut representation’ı istemek, HEAD aynı retrieval’ın content taşımayan metadata görünümünü istemektir. POST target’ın kendi semantics’ine göre content’i işlemesini ister. PUT bilinen target state’ini gönderilen representation ile create/replace etmeyi ister. DELETE target ile mevcut functionality ilişkisinin kaldırılmasını ister; bütün backup bytes’ının fiziksel silindiği garantisi değildir.
WEB-07.02 · Core · Methods, semantics ve status codes ↗Safe ve idempotent farklı sorulara cevap verirSafe, method’ün tanımlanmış niyetinin read-only olmasıdır. GET, HEAD, OPTIONS ve TRACE safe’tir. Server yine access log yazabilir; incidental side effect safe tanımını tek başına bozmaz. Ancak resource sahibi safe method ile business state değişikliği isteyen action’ı çalıştırmamalıdır: automated retrieval ve prefetch de bu method’leri kullanır.
WEB-07.02 · Core · Methods, semantics ve status codes ↗Status sınıfları: sonuç var, bütün gerçekler yok1xx interim information, 2xx successful processing, 3xx redirection veya related additional action, 4xx perceived client error, 5xx server error sınıflarıdır. Numeric status method ve headers ile okunur. 201 creation bildirir; 202 accepted processing’in tamamlandığını vaat etmez. 204 fulfilled request’i ek content olmadan bildirir.
WEB-07.02 · Core · Methods, semantics ve status codes ↗Body kuralları ve Browser sonucuHEAD response’u content taşıyamaz. Örnekte Content-Length: 10 gönderilir: GET olsaydı aynı representation’ın 10 byte olacağını söyler; HEAD’de beklenen body 0 byte’tır. Böyle bir field HEAD için kullanılacaksa would-be GET content uzunluğuyla eşleşmelidir. 204 ise content/trailers içeremez ve server Content-Length gönderemez; Content-Length: 0 ekleyerek body kuralını açıklamak doğru değildir.
WEB-07.02 · Core · Methods, semantics ve status codes ↗Read-only etiketi erişim izni değildirConfidential bir note GET ile okunur. Safe olmasının anlamı client’ın state mutation istememesidir; note’nin sensitive olup olmadığını veya Duru’ya ait olup olmadığını açıklamaz. Yetki kontrolünü yalnız write methods’a koyan tasarım protected read boundary’sini eksik bırakır.
WEB-07.02 · Red · Methods, semantics ve status codes ↗Retry ve status yanlış kabul kapısına dönüşmesinNormal PUT replacement aynı desired state’e gider. Yanlış varsayım bütün POST’ların aynı garantiyi verdiğini veya 202’nin işi bitirdiğini sanmaktır. Etki duplicate business action ya da henüz tamamlanmayan işi tamamlandı diye göstermek olabilir; scope application semantics’ine bağlıdır.
WEB-07.02 · Red · Methods, semantics ve status codes ↗Method, status ve gerçek state değişimini eşleİdempotence kontrolünde response metninin eşitliğini değil intended state effect’i karşılaştır. Artifact two PUT completions için before/after label tutar. HEAD observation’da wouldBeGetOctets=10 ile actualContentOctets=0 ayrı alanlardır. Bunlar öğretim karar kayıtlarıdır, access log standardı değildir.
WEB-07.02 · Blue · Methods, semantics ve status codes ↗Status catalog’u ürün sözleşmesiyle tamamlaManual exercise’de PUT tekrarının label sonucunu, HEAD metadata’sını ve 404 public equivalence’ını karşılaştır. 202’yi “tamamlandı”, 404’ü “kesin yok”, 204’ü “JSON boş object” diye çevirme. İşlem sonucu ve user-facing mesaj uygulamanın belgeli contract’ına bağlansın.
WEB-07.02 · Blue · Methods, semantics ve status codes ↗methods.safe / idempotentStandart method intent’i; permission, encryption veya bütün API implementasyonları hakkında garanti değil.
WEB-07.02 · Methods, semantics ve status codes ↗put.attemptsİki replacement sonrası intended state; eşzamanlı writer yok.
WEB-07.02 · Methods, semantics ve status codes ↗head.contentLengthFieldHEAD’de gelen content boyutu değil, would-be GET metadata’sı.
WEB-07.02 · Methods, semantics ve status codes ↗privacy404Farklı internal state’in aynı public status/body’ye eşlenmesi.
WEB-07.02 · Methods, semantics ve status codes ↗fetchOutcomesHTTP outcome, Promise outcome ve business completion ayrı gözlem.
WEB-07.02 · Methods, semantics ve status codes ↗Header bir field’dır; her değer aynı kuralla birleşmezHTTP fields name/value metadata taşır. Field name case-insensitive’dır: Content-Type ile content-type aynı tanımlı field’ı işaretler. Value yorumu ise field’ın sözleşmesine bağlıdır; tüm value’ları lowercase yapmak veya her tekrarlanan field’ı aynı biçimde comma ile birleştirmek doğru genel kural değildir. Bazı fields list syntax kullanır, bazıları tek değer ister; Content-Type singleton’dır.
WEB-07.03 · Core · Headers, bodies ve media types ↗Request body: bytes → format → veri → policyDuru POST /note-titles ile {"title":"Çay"} gönderir. UTF-8 serialization’daki Ç iki byte’tır. Body 15 Unicode code point ama 16 byte’tır; Content-Length: 16 body’nin UTF-8 bytes’ından hesaplanır. JS string.length de genel byte ölçüsü değildir; UTF-16 code units sayar. Başlıkların veya boş satırın byte’ları bu Content-Length hesabına eklenmez.
WEB-07.03 · Core · Headers, bodies ve media types ↗Response body request’in aynası değildirNormal action title state’ini Çay yapar ve result olarak Çay text’ini döndürür. Request media type application/json olsa da response Content-Type: text/plain; charset=utf-8’dır. Bu response content’i 3 code point, 4 byte’tır. Server’ın seçtiği response formatı ve client’ın onu okuma biçimi birbirine uygun olmalıdır; response.json() her başarılı request’in doğal devamı değildir.
WEB-07.03 · Core · Headers, bodies ve media types ↗Framing, content coding ve media format ayrı katmanlarHTTP/1.1 fixture Content-Length ile content uzunluğunu önden bildirir; Transfer-Encoding kullanmaz. Chunked transfer coding farklı message delimitation sağlayabilir. Content-Encoding: gzip gibi coding ise representation data’nın üzerine uygulanan dönüşümdür; Content-Type decoded representation format’ını anlatır. Coding varsa Content-Length genellikle aktarılacak coded octets’ı sayar; sonradan açılmış metnin karakter sayısını değil.
WEB-07.03 · Core · Headers, bodies ve media types ↗Format etiketi güven kararı olamazClient Content-Type seçebilir; normal endpoint bunu uygun parser ve policy seçimi için kullanır. Sadece label’a güvenerek schema validation veya resource permission atlanırsa taşınan verinin beklenmedik business etkisi olabilir. Etki action ve persistence kapsamına bağlıdır; application/json bütün fields’ın trusted olduğu anlamına gelmez.
WEB-07.03 · Red · Headers, bodies ve media types ↗Byte sınırı ve processing context birlikte korunurUnicode metni karakter sayısıyla frame etmek veya coded content’i decoded uzunlukla karşılaştırmak yanlış completeness varsayımı kurar. Ayrı bir hata da response type’ını request type’ından kopyalayıp client’ı farklı parser’a yönlendirmektir. Bu karışıklıklar reliability ve güven sınırlarının yanlış yorumlanmasına yol açabilir.
WEB-07.03 · Red · Headers, bodies ve media types ↗Byte hesabını gerçek serialization üzerinde yapArtifact UTF-8 hex, Unicode code point count ve bodyOctets’ı birlikte verir. {"title":"Çay"} için 15/16; response Çay için 3/4 ayrımı görülebilir. Sadece JSON pretty-print’e yeni satır eklemek bile bytes’ı değiştirir; yeniden serialize edilen bir görünüm capture’daki content uzunluğu olmayabilir.
WEB-07.03 · Blue · Headers, bodies ve media types ↗Reject kararında state değişmediğini kontrol etTeaching observations accepted ve stateChanged alanlarını birlikte taşır. XPath accepted=false ama stateChanged=true fixture’ını seçer. Normal rows sıfır, purposely inconsistent pozitif fixture bir sonuç verir. Eksik observation ise “kontrol doğru” sonucu değil evidence gap’tir; production log şeması iddia edilmez.
WEB-07.03 · Blue · Headers, bodies ve media types ↗requestBodyOctets / requestCodePointsUTF-8 bytes ile Unicode code points ayrı ölçülür; fixture’da 16/15.
WEB-07.03 · Headers, bodies ve media types ↗parserCalled / schemaValidSupported format syntax parse’tan, parse sonucu schema kararından ayrı.
WEB-07.03 · Headers, bodies ve media types ↗responseContentTypeRequest application/json iken response text/plain olabilir.
WEB-07.03 · Headers, bodies ve media types ↗afterTitleCommit yalnız bütün acceptance kapıları geçildiğinde; iki rejection Draft’ı korur.
WEB-07.03 · Headers, bodies ve media types ↗requestUtf8HexBody’nin inert UTF-8 byte gösterimi; parser/execution instruction değildir.
WEB-07.03 · Headers, bodies ve media types ↗Content-Length hangi bytes’ı sayar?Atlas GET /tea-label için Çay döndürür. UTF-8 identity representation 3 code point ama 4 byte’tır. HTTP/1.1’de Content-Length: 4 bu content’in beklenen octet uzunluğunu verir; start-line, headers ve boş ayırıcı satırın byte’ları buna katılmaz. Receiver framing’e göre bütün gerekli content octets’ını almadan mesajı complete sayamaz.
WEB-07.04 · Core · Framing, compression ve negotiation ↗Chunked: content sınırı parça parça bulunurTransfer-Encoding: chunked HTTP/1.1 message content’ini size-prefixed chunks ile taşır. Chunk size hexadecimal octet sayısıdır; character count değildir. Fixture iki valid chunk kullanır: Ç UTF-8’de 2 byte, ay 2 byte. Ardından zero-sized last chunk ve empty trailer section gelir. Dechunk işlemi birleşik 4 content byte’ını verir; size satırları ve CRLF wrapper content’e dahil değildir.
WEB-07.04 · Core · Framing, compression ve negotiation ↗Content-Encoding: aynı anlamın başka byte gösterimiContent-Type: text/plain; charset=utf-8 decoded representation’ın formatını anlatır. Content-Encoding: gzip önce gzip’i açma ihtiyacını anlatır. Gösterimde receiver 24 coded byte’ı alır, gzip’i çözer, sonra 4 UTF-8 byte’ı yorumlar. Bu katman sırası bütün body’yi buffer etmek zorunluluğu değildir; streaming implementation aynı sırayı gelen parçalar üzerinde uygulayabilir. Media parser doğrudan gzip bytes’ını Çay sanarak okuyamaz.
WEB-07.04 · Core · Framing, compression ve negotiation ↗Preferences, selection ve cache reuseAccept media preferences, Accept-Encoding content-coding preferences taşır. q weight göreli tercih bildirir; q=0 kabul edilmediğini, omitted q ise 1 değerini ifade eder. Server seçim yaparken kendi available variants ve policy’sini kullanır. Preferences, permission listesi veya kesin response contract’ı değildir.
WEB-07.04 · Core · Framing, compression ve negotiation ↗İki uzunluğu aynı ölçü sanmak yanlış boundary oluştururNormal coded response Content-Length=24 taşır; decoded text 4 byte’tır. Decoded size ile wire content size’ı karşılaştırmak yanlış completeness veya limit değerlendirmesi doğurur. Ayrıca chunk wrapper overhead’i content size’a karıştırılmamalıdır; gerçek stack bu katmanları farklı aşamalarda işler.
WEB-07.04 · Red · Framing, compression ve negotiation ↗Negotiated variant doğru cache scope’unda kalmalıAynı target farklı acceptable coding veya media context’i için farklı representation seçebilir. Yanlış selecting-field envanteri cache’in uyumsuz variant reuse kararına katkı verebilir; etki concrete cache ve recipient behavior’a bağlıdır. Accept/User-Agent gibi client metadata access-control kanıtı sayılmaz.
WEB-07.04 · Red · Framing, compression ve negotiation ↗Aynı content’i katmanları çıkararak karşılaştırManual exercise’de gzip hex’i decoded UTF-8 hex ile ayır, Content-Length’i coded size ile eşleştir. Chunked notation’da her chunk size’ı data bytes ile eşleştir, wrapper’ı çıkarınca aynı Çay bytes’ının kaldığını göster. Text’in eşit olması bütün HTTP message’ların byte-for-byte eşit olduğu anlamına gelmez.
WEB-07.04 · Blue · Framing, compression ve negotiation ↗Selecting values ve missing evidenceArtifact reuse rows iki Accept-Encoding context’ini karşılaştırır: gzip isteyen eski request ile identity isteyen yeni request, Vary bu field’ı içerdiğinde aynı matching key sayılmaz. Her field için actual eski/yeni value gerekir; yokluğun kendisi de bir değerdir. Bu örnek origin revalidation yolunu false supplied alır.
WEB-07.04 · Blue · Framing, compression ve negotiation ↗gzip.codedOctets / decodedOctetsNative local gzip 24 byte; decoded UTF-8 4 byte; tüm HTTP message boyutu değil.
WEB-07.04 · Framing, compression ve negotiation ↗chunked.bodyWireOctetsValid chunk wrapper dahil 19 byte; dechunked content 4 byte.
WEB-07.04 · Framing, compression ve negotiation ↗variantsExplicit server selection, media, coding ve framing kararları.
WEB-07.04 · Framing, compression ve negotiation ↗cacheReuseRowsSadece Vary selecting-values matching; gerçek cache store değil.
WEB-07.04 · Framing, compression ve negotiation ↗Redirect, ikinci resource’u client’a seçtirirDuru’nun Atlas title formu POST /note-titles ile {"title":"Çay"} gönderir. Normal branch action’ı uygular ve 303 See Other, Location: /notes/atlas-1 döndürür. Browser Location’ı mevcut URL bağlamında çözer ve sonucu GET ile ister. Bu ikinci request title işlemini tekrar yapmaz; created note representation’ını getirir. Artifact iki request’i ve ortadaki redirect response’u ayrı kayıt olarak gösterir.
WEB-07.05 · Core · Redirect, connection ve stateless HTTP ↗Referer ve User-Agent: context, identity değilReferer field adı tarihsel tek-r yazımıyla kullanılır; Referrer-Policy farklı bir field’dır. Referer request’i başlatan sayfa bağlamını kısmen bildirebilir. Policy ve navigation context nedeniyle hiç gelmeyebilir, yalnız origin içerebilir veya path/query içerebilir; fragment ve userinfo taşınmaz. Eksik Referer tek başına kötü niyet veya direct navigation kanıtı değildir.
WEB-07.05 · Core · Redirect, connection ve stateless HTTP ↗Host hangi site’ye yöneldiğini anlatırBir origin server aynı address üzerinde birden fazla virtual host sunabilir. HTTP/1.1 Host, target URI’nin host/port bilgisini taşır; Application uygun host’un resource’larını seçebilir. HTTP/2–3’te :authority bu control-data rolünü üstlenebilir. TCP connection address’i ve TLS server identity doğrulaması farklı katmanlardır; public URL, Host ve certificate aynı nesne değildir.
WEB-07.05 · Core · Redirect, connection ve stateless HTTP ↗Connection persistence mesajlar arasında taşıma kaynağını korurHTTP/1.1 default olarak persistent connection kullanabilir. Bir complete request/response pair sonrasında aynı connection yeni exchange taşıyabilir; Connection: close mevcut response sonrası persistence’ın bitmesini bildirir. Reuse için message boundary’nin anlaşılır olması ve önceki body’nin tüketilmesi önemlidir. Connection herhangi bir anda da kapanabilir; API connection pool bunun için kendi policy’sini uygular.
WEB-07.05 · Core · Redirect, connection ve stateless HTTP ↗Stateless request semantics, stateful applicationHTTP stateless, her request message’ın semantics’inin kendi context’iyle anlaşılabilmesini anlatır. Resource database, session store, cache veya audit’in hiç state tutmaması demek değildir. Browser’ın cookie/session reference’ı yeniden taşıması ve server’ın o reference’ı trusted store/policy ile değerlendirmesi application state continuity’sini sağlar.
WEB-07.05 · Core · Redirect, connection ve stateless HTTP ↗Redirect destination ve action intent birlikte kontrol edilirNormal 303 path’i completed submission’dan read-only result’a gider; 307 path’i pending POST’u yeni endpoint’e taşır. Yanlış method varsayımı duplicate action veya yanlış target processing yaratabilir. Özellikle action uygulanmış mı sorusu redirect status’tan tek başına çıkarılmaz; fixture’ın server decision state’i açıkça bunu bildirir.
WEB-07.05 · Red · Redirect, connection ve stateless HTTP ↗Client metadata ve connection identity yerine geçmesinReferer, User-Agent ve Host context sağlar; bunlara authenticated subject anlamı yüklemek trusted boundary’yi yanlış yerde kurar. Bir protected request’in kabulü yalnız “bu connection daha önce başarılıydı” diye yapılamaz. Etki hangi protected read/action’a yanlış authority verildiğine bağlıdır.
WEB-07.05 · Red · Redirect, connection ve stateless HTTP ↗Redirect chain’i method ve content ile okuManual exercise’de initial request, redirect status/Location ve follow-up request’i ayrı işaretle. Normal branch POST actionCount=1 ardından GET content=null verir; 307 branch önce actionCount=0, sonra preserved POST completion ile 1 olur. Final 200 her iki branch’in intermediate processing’inin aynı olduğunu göstermez.
WEB-07.05 · Blue · Redirect, connection ve stateless HTTP ↗Connection event ile session decision’ı ayırconn-a closed observation transport state’tir. SESSION_REF_ALIAS active observation logical session state’tir. Sahnedeki close branch bu ikisinin aynı anda farklı değerlerde olabileceğini gösterir; close step ağda logout request’i çizmez. Yeni request eligibility check’i local trusted-result assumption’dır.
WEB-07.05 · Blue · Redirect, connection ve stateless HTTP ↗redirectRowsİlk exchange, follow request ve action count ayrı; response trace ölçümü değil.
WEB-07.05 · Redirect, connection ve stateless HTTP ↗redirectMethodMatrixFetch davranışı ile genel HTTP optional POST rewrite qualification’ı ayrılır.
WEB-07.05 · Redirect, connection ve stateless HTTP ↗requestContextSupplied Host/UA ve no-referrer context identity değildir.
WEB-07.05 · Redirect, connection ve stateless HTTP ↗connectionSessionClose transport state değiştirir; active session ve fresh request policy ayrı.
WEB-07.05 · Redirect, connection ve stateless HTTP ↗HTTP/1.0 tarihsel başlangıç noktasıDuru’nun Atlas client’ı bir not istediğinde HTTP/1.0 da method, target, status ve representation metadata taşır. RFC 1945 Mayıs 1996 tarihli Informational belgedir; bu derste historical behavior’ı açıklamak için kullanılır. Güncel parser ve HTTP/1.1 beklentisi o belgeden geriye doğru kurulmaz.
WEB-08.01 · Core · HTTP/1.x connection ve framing ↗Byte stream message boundary değildirTCP application’a ordered bytes sunar; bir socket read bir HTTP message’a karşılık gelmek zorunda değildir. Tek read bir header’ın yarısını, bir message’ı veya iki message’ın birleşimini getirebilir. HTTP/1.1 parser start-line, CRLF-delimited fields, boş satır ve method/status context’inden framing’i belirler.
WEB-08.01 · Core · HTTP/1.x connection ve framing ↗Persistence, completion’dan sonra reuse ederHTTP/1.1 için persistent connection varsayılan olabilir. Normal branch tek conn-h1 üzerinde iki exchange taşır ve response’lar complete olduktan sonra connection açık kalır. Keep-Alive field’ı eklemek bu varsayılan davranışın önkoşulu değildir. Explicit close, peer policy veya transport event ise reuse’u bitirebilir.
WEB-08.01 · Core · HTTP/1.x connection ve framing ↗Pipelining response sırasını kaldırmazClient birinci response’u beklemeden ikinci request’i gönderebilir: buna pipelining denir. İki request aynı byte stream’de sırayla alındığında server karşılık gelen response’ları aynı sırayla gönderir. Safe requests paralel işlenebilir; bu, response content’lerinin stream ID olmadan interleave edilebileceği anlamına gelmez.
WEB-08.01 · Core · HTTP/1.x connection ve framing ↗Yanlış sınır, yanlış exchange yorumuna dönüşürSocket read’i complete message kabul eden bir application normal fragmentation veya coalescing sırasında bile yanlış sonuca ulaşabilir. Hata koşulu TCP delivery units ile HTTP framing’in eş tutulmasıdır; etki sonraki response’un yanlış resource’a eşlenmesine kadar uzanabilir.
WEB-08.01 · Red · HTTP/1.x connection ve framing ↗Queue ile authorization farklı kaynaklardırPipeline’da B bekliyorsa sebep burada A response sırasıdır; “B forbidden” değildir. Connection ve pending responses kaynak tüketir, fakat her gecikme saldırı sayılmaz. Slow upstream, application work veya normal scheduling aynı görünen wait state’i yaratabilir.
WEB-08.01 · Red · HTTP/1.x connection ve framing ↗Sırayı ve tamamlanmayı aynı ledger’da tutManual exercise’de her request’e öğretim için A/B sıra alias’ı ver, response’ların content bytes’ını declared length ile say. Alias gerçek HTTP/1.1 stream identifier değildir; request order üzerinden correlation yapılır. Her response’un son byte’ından sonra başlayan alanı bir sonraki message olarak işaretle.
WEB-08.01 · Blue · HTTP/1.x connection ve framing ↗Close event’i framing bağlamında okuHistorical branch’te dört content byte gelince response henüz EOF-delimited olarak bitmiş değildir. Supplied close event sonrasında parser body boundary’sini bilir; connection reuse artık yoktur. Close event’i application logout veya resource silinmesi gibi çizmek farklı bir mekanizmayı uydurur.
WEB-08.01 · Blue · HTTP/1.x connection ve framing ↗preparedOrder / deliveredOrderServer hazırlık sırası ve client arrival sırası farklı ölçülerdir.
WEB-08.01 · HTTP/1.x connection ve framing ↗contentOctets / messageOctetsContent-Length yalnız content’i sayar; bütün message ayrıca headers içerir.
WEB-08.01 · HTTP/1.x connection ve framing ↗http10.completeBeforeCloseEOF-delimited response’un supplied close öncesi completion false.
WEB-08.01 · HTTP/1.x connection ve framing ↗HTTP semantics kalır; message taşıması değişirDuru Atlas’tan /atlas-notes ve /tea ister. HTTP/2 yine GET ve 200 semantics’ini taşır, fakat text request/status-line yerine control data pseudo-headers ve binary frames kullanır. :method, :scheme, :authority, :path ile :status okunur gösterimde fields gibi görünür; bunlar literal HTTP/1.1 start-line değildir.
WEB-08.02 · Core · HTTP/2 streams, frames ve HPACK ↗Multiplexing response order’ı stream’e bağlarServer stream 1’in Atlas note content’ini iki DATA frame’e böler: Atlas boşluk dahil 6 byte, note 4 byte. Aralarına stream 3’ün dört-byte Çay DATA frame’i girer. Stream 3 END_STREAM ile önce complete olur; stream 1’in son dört byte’ı sonra gelir. HTTP/1.1 pipeline’ın response-order kuyruğu burada aynı biçimde zorunlu değildir.
WEB-08.02 · Core · HTTP/2 streams, frames ve HPACK ↗Frame header ile content length ayrı ölçülürHTTP/2 frame header sabit 9 octet’tir: 24-bit payload Length, Type, Flags ve reserved bit ile 31-bit Stream Identifier. Length bu dokuz byte’ı içermez. Artifact stream 3 için type DATA=0, flags END_STREAM=1, payloadLength=4 verir; UTF-8 Çay ile toplam 13-byte frame fragment’i oluşur.
WEB-08.02 · Core · HTTP/2 streams, frames ve HPACK ↗HPACK, peer’ların paylaştığı field context’idirHPACK body’yi compress etmez; field sections için static table, dynamic table ve literal representations kullanır. Static table 61 entry içerir; :method GET index=2, :path / index=4, :scheme https index=7, :status 200 index=8’dir. Indexed encoding table’daki name/value pair’i kullanır; string literal’ları gerektiğinde static Huffman coding kullanabilir.
WEB-08.02 · Core · HTTP/2 streams, frames ve HPACK ↗Transport state, subject state değildirStream 1 ve 3 farklı exchange’leri ayırır; aynı connection üzerinde oldukları için authorization bir kez yapılmış sayılmaz. Hata koşulu stream ID veya connection reuse’u trusted user/resource policy yerine kullanmaktır. Etki hangi protected response’un yanlış subject’e bağlandığına göre belirlenir.
WEB-08.02 · Red · HTTP/2 streams, frames ve HPACK ↗Compression ve multiplexing resource sınırlarını kaldırmazDynamic table index’ini current context olmadan çözmek farklı field üretir. Böyle bir yanlış inceleme cache/routing veya policy input’unu hatalı okutur. Decoder state, direction ve field-block order birlikte bilinmelidir; yalnız son byte hex’i yeterli değildir.
WEB-08.02 · Red · HTTP/2 streams, frames ve HPACK ↗Frame ledger’ını stream’e göre birleştirManual exercise’de önce stream 1 ve 3 headers projection’ını ayır, sonra DATA content’i stream ID’ye göre birleştir. Arrival order DATA1(6), DATA3(4), DATA1(4) olsa da text sonuçları Atlas note ve Çay’dır. Global arrival array’den tek concatenated body üretmek yanlış correlation olur.
WEB-08.02 · Blue · HTTP/2 streams, frames ve HPACK ↗Wait reason ve compression context’i görünür tutWindow branch’te stream credit 2, connection credit 10 ve pending content 4’tür. İki credit’ten küçük olan DATA progress’i sınırlar; peer update’i arrival olmadan sender window değişmez. Yeni credit geldikten sonra kullanılan amount iki window’dan da çıkarılır; server’ın “ready” state’i gönderilmiş sayılmaz.
WEB-08.02 · Blue · HTTP/2 streams, frames ve HPACK ↗dataFramesValid DATA fragments: Length payload’ı sayar, frame header ayrıca 9 byte.
WEB-08.02 · HTTP/2 streams, frames ve HPACK ↗hpack.operationsCurrent shared directional context ile newest-first dynamic indices.
WEB-08.02 · HTTP/2 streams, frames ve HPACK ↗flow / tcpGapPeer credit wait ile ordered TCP delivery wait ayrı conditions.
WEB-08.02 · HTTP/2 streams, frames ve HPACK ↗QUIC transport, HTTP/3 application mappingHTTP/3 ortak HTTP semantics’ini QUIC üzerine map eder. QUIC UDP tabanlı secure connection transport’tur; HTTP/3 yalnız “HTTP/2 header’larını UDP datagram’a koymak” değildir. Handshake, reliable stream delivery, flow control ve packet protection transport katmanında ele alınır; application method/status/media anlamını HTTP belirler.
WEB-08.03 · Core · HTTP/3 ve QUIC ↗Request streams ve per-stream deliveryHTTP/3 client-initiated bidirectional streams request ve response taşır: ilk stream 0, sonraki 4 ve 8’dir. HTTP/2’de 0 connection control iken burada request stream olabilir. Control/QPACK encoder/decoder gibi işlevler ayrı unidirectional streams kullanır; iki protocol’ün stream-number anlamları körü körüne taşınmaz.
WEB-08.03 · Core · HTTP/3 ve QUIC ↗HTTP/3 frame, QUIC packet veya STREAM frame değildirHTTP/3 frame Type ve Length’i QUIC variable-length integer encoding ile yazar, ardından payload gelir. Stream ID frame header’da yoktur çünkü bytes zaten QUIC stream’indedir. HTTP/2’nin sabit 9-byte frame header ve END_STREAM flag’ini burada arama; HTTP/3 message completion underlying stream ending ile ilişkilidir.
WEB-08.03 · Core · HTTP/3 ve QUIC ↗QPACK bağımsız streams’e field dependencies eklerHPACK field blocks’un sıralı context update’ine dayanır. QUIC farklı streams’i bağımsız getirebildiği için HTTP/3 QPACK kullanır: encoder stream table instructions taşır, encoded field sections o state’e referans verir. Encoder/decoder feedback ayrı unidirectional streams’dedir; bir HTTP HEADERS frame table insertion’ın wire’da önce alınmasını kendiliğinden garanti etmez.
WEB-08.03 · Core · HTTP/3 ve QUIC ↗Security transport’i HTTP permission yerine koymaQUIC connection security peer ve packet protection context’i sağlar; GET’in hangi tenant resource’una izinli olduğunu kendi başına belirlemez. Hata koşulu established secure connection veya valid stream’i application subject permission yerine kullanmaktır. Etki protected content’in yanlış bağlama sunulması olabilir.
WEB-08.03 · Red · HTTP/3 ve QUIC ↗Independent delivery sınırsız buffering değildirStream tail bytes prefix gelene kadar buffer’da kalabilir; QPACK field section insertion gelene kadar unusable kalabilir. Bunlar farklı dependency’lerdir fakat ikisi de memory/work tutar. Her wait malicious değildir: loss, reordering, server scheduling veya ordinary backpressure olabilir.
WEB-08.03 · Red · HTTP/3 ve QUIC ↗Üç boundary’yi ayrı işaretleManual exercise’de QUIC packet delivery, ordered stream data ve HTTP/3 frame interpretation’ı ayrı satırlara ayır. Artifact offset’leri illustrated suffix’e göredir; bunları gerçek STREAM Offset field’ı diye log veya capture’a taşımama. Stream 0 tail alınmış olsa da usable prefix sıfır olabilir.
WEB-08.03 · Blue · HTTP/3 ve QUIC ↗QPACK arrival’ı decode ile karıştırmaDependency branch’te Required Insert Count ve current Insert Count’u kaydet. İlk durumda 1>0 olduğu için stream 0 blocked’tur; independent stream 4 için 0<=0 prerequisite sağlanır. Encoder instruction arrival önce yalnız bytes alınmasını bildirir; local processing current count’u artırır.
WEB-08.03 · Blue · HTTP/3 ve QUIC ↗streamSuffixes.framesHTTP/3 DATA fragments; QUIC packet/encryption headers yoktur.
WEB-08.03 · HTTP/3 ve QUIC ↗offsetWithinSuffixYerel teaching coordinate; gerçek QUIC absolute STREAM offset değildir.
WEB-08.03 · HTTP/3 ve QUIC ↗requiredInsertCount / insertCountDynamic reference prerequisite ile decoder’ın current insert count’u.
WEB-08.03 · HTTP/3 ve QUIC ↗decoderFeedbackRequiredDynamic reference decode sonrasında feedback gereksinimi; exchange kapsam dışında.
WEB-08.03 · HTTP/3 ve QUIC ↗Önce değişmeyen soruyu belirleDuru library.atlas.example üzerindeki /tea?view=plain resource’unu GET ile ister. Öğretim örneğinde Atlas text/plain representation seçer ve Çay döndürür. HTTP version değişse de bu seçilmiş method, target, request preference, status ve representation data aynı kalabilir. Üç kart bu ortak exchange’in alternatif görünümüdür; bir request’in sırayla üç server’dan geçtiğini anlatmaz.
WEB-08.04 · Core · Aynı request’in üç transport görünümü ↗Satırları control data’ya eşleHTTP/1.1 direct-origin görünümünde GET /tea?view=plain HTTP/1.1 request-line’ı ve Host field’ı vardır. Scheme bu örnekte HTTPS connection context’inden gelir. Header section CRLF CRLF ile biter. Response status-line 200’ü, Content-Type formatı, Content-Length ise content’in octet sayısını bildirir. Çay üç karakter ama UTF-8’de dört byte’tır; artifact bunu tek bir byte hesabıyla tutar.
WEB-08.04 · Core · Aynı request’in üç transport görünümü ↗Context eşitliği byte eşitliği değildirHTTP/2 TCP stream’i üzerinde HTTP stream’leri kullanır ve field sections HPACK context’iyle işlenir. HTTP/3 aynı HTTP intent’i QUIC stream’lerine eşler; QPACK field compression’ın farklı state/dependency kuralları vardır. Aynı decoded field list bir context’te literal, başka context’te önceki entry reference’ı olarak kodlanabilir. Bu nedenle fields eşit diye compressed bytes’in veya total wire size’ın eşit olduğunu hesaplama.
WEB-08.04 · Core · Aynı request’in üç transport görünümü ↗Format değişince trust sınırını tekrar sorBir gateway decoded request’i farklı protocol’e çevirebilir. Bu dönüşümün görevi method, target ve field meaning’i korumaktır; client’ın kendi seçtiği authority metnini trusted identity’ye dönüştürmek değildir. Public tea örneğinde business karar basittir. Protected note eklendiğinde hangi kullanıcı hangi action’ı yapabilir sorusu hâlâ Application’a aittir.
WEB-08.04 · Red · Aynı request’in üç transport görünümü ↗Compression state’i taşınabilir credential sanmaDynamic table reference’ının anlamı decoder’ın o connection/direction için tuttuğu state’e bağlıdır. Bir araç decoded accept değerini gösterebilir ama reference’ın hangi table’dan çözüldüğünü saklayabilir. HTTP/2 ile HTTP/3 aynı pseudo-header adlarını kullanırken aynı codec’i kullanmaz; birinin bytes’ını diğerinin parser girdisi yapmak bu dersin eşdeğerlik iddiası değildir.
WEB-08.04 · Red · Aynı request’in üç transport görünümü ↗Eşleştirme defteriyle manual kontrolArtifact’taki browserUrl, target ve fragment’i ayır. H1 request-line ile H2/H3 :method ve :path değerlerini eşle; Host’u :authority ile, HTTPS context’ini :scheme ile karşılaştır. Response için numeric status, media type ve content byte’larını ayrı işaretle. H1 OK metninin diğer kartlarda yokluğu semantic kayıp değildir.
WEB-08.04 · Blue · Aynı request’in üç transport görünümü ↗Kanıtı doğru büyüklükte tutManual sonuca “ortak semantic alanlar eşit; wire bytes gösterilmedi” yazmak yararlı ve doğrulanabilir bir ifadedir. Compression ratio, latency veya browser protocol selection’ı bu kartlardan çıkarılamaz. Bir gerçek capture değerlendirilecekse negotiated version, decoder context ve exchange completion beraber alınmalıdır.
WEB-08.04 · Blue · Aynı request’in üç transport görünümü ↗commonRequestKarşılaştırılacak semantic alanlar; fragment target’a girmez.
WEB-08.04 · Aynı request’in üç transport görünümü ↗http11Geçerli CRLF metin syntax’ı; scheme connection context’inden supplied.
WEB-08.04 · Aynı request’in üç transport görünümü ↗requestFieldsProjectionDecoded pseudo-header ve normal fields; compressed wire bytes değil.
WEB-08.04 · Aynı request’in üç transport görünümü ↗contentOctetsÇay için dört UTF-8 byte; bütün message veya frame boyutu değil.
WEB-08.04 · Aynı request’in üç transport görünümü ↗Intermediary aynı programda iki rol kurarHTTP intermediary bir connection’da request alan server, sonraki connection’da request gönderen client olabilir. Atlas browser’dan GET /notes istediğinde CDN veya reverse proxy request’i application’a iletebilir, cache’ten yanıtlayabilir ya da policy gereği durdurabilir. “Araya girdi” demek, request’in nasıl yönlendirildiğini veya TLS plaintext’ini kimin görebildiğini açıklamaz. Connection sınırı ile HTTP message sınırını ayrı düşün.
WEB-09.01 · Core · Proxy rolleri ve forwarded context ↗Forward proxy client tarafından seçilirForward proxy, client’ın configuration veya policy yoluyla seçtiği intermediary’dir. Client hangi origin resource’u istediğini bilir; proxy o hedefe erişime aracılık eder. Normal HTTP forwarding’de absolute target bilgisi kullanılır. HTTPS için CONNECT ile tunnel kurulduğunda proxy sonraki byte’ları TLS’yi terminate etmeden taşıyabilir. Tunnel kurulmuş olması, proxy’nin içindeki HTTP body’yi okuyabildiğini göstermez.
WEB-09.01 · Core · Proxy rolleri ve forwarded context ↗Reverse proxy service tarafında seçilirReverse proxy, client’a origin service adına yanıt veren gateway’dir. Atlas kullanıcısı notes.example.org ister; request’in app.example.org upstream’ine gideceğini service configuration belirler. Load balancing, caching veya routing bu yerleşimde bulunabilir; reverse proxy olmak için hepsinin bulunması gerekmez. CDN de reverse-proxy rolü oynayabilir. CDN veya proxy etiketi, tek bir TLS endpoint ya da tek bir güven kararı olduğunu göstermez.
WEB-09.01 · Core · Proxy rolleri ve forwarded context ↗Transparent adı plaintext erişimini kanıtlamazGüncel HTTP semantics’te interception proxy, client onu seçmeden network flow’un yönlendirildiği intermediary’dir; transparent sözcüğü de sıkça bu anlamda kullanılır. Eski RFC2616 ise transparent proxy’yi, gerekli proxy işlemleri dışında message’ı değiştirmeyen proxy olarak tanımlıyordu. Aynı belgedeki semantically transparent cache de response semantics’ini korur. Bu tarihsel tanımlar güncel interception tanımının yerine geçmez. Transparent derken hangi anlamın kullanıldığını belirt; interception rolü de TLS termination’ı kendiliğinden kanıtlamaz.
WEB-09.01 · Core · Proxy rolleri ve forwarded context ↗Forwarded message kendi hop context’ini taşırIntermediary, aldığı message’ı aynen kopyalamak zorunda değildir. HTTP/1.1 forwarding’de Connection alanında adlandırılan connection-specific alanlar ve Connection’ın kendisi sonraki hop’a aktarılmadan kaldırılır. Bazı protocol version’larında bu alanlara zaten izin verilmez. Via, intermediary’nin protocol bilgisini; Forwarded ise client-facing context parametrelerini taşır. İkisinin liste sıralarını birleştirip kesin bir topology çıkaramazsın.
WEB-09.01 · Core · Proxy rolleri ve forwarded context ↗Forwarded ve X-Forwarded-* için provenanceX-Forwarded-For, X-Forwarded-Proto ve X-Forwarded-Host yaygın convention’lardır; hepsini tek bir standart syntax veya aynı hop listesi gibi düşünme. Forwarded, parametreleri element içinde gruplayan standart biçimdir. Ayrı X-Forwarded-* listelerinin nasıl eklendiğini bilmeden bunları her zaman kayıpsız dönüştüremezsin. Hiçbiri kendi başına doğrulanmış kimlik değildir. Header’da IP veya https yazması, authenticated peer kanıtı üretmez.
WEB-09.01 · Core · Proxy rolleri ve forwarded context ↗Context’i identity’ye dönüştüren varsayımForwarded field’ın parse edilebilir olması doğru provenance’a sahip olduğunu göstermez. Direct peer ile header’da tarif edilen client ayrı observations’dır; NAT, proxy pool ve privacy alias yüzünden bunları aynı kişi saymak ayrıca hatalıdır. Kırılan varsayım client-originated context’i server-authoritative identity gibi kullanmaktır. Bu model external context’i belirli bir kötü değerle canlandırmaz; provenance class’ı tek başına trust kararını ayırmaya yeter.
WEB-09.01 · Red · Proxy rolleri ve forwarded context ↗Hop sırası bütün route’un kanıtı değildirForwarded element’leri participating writer sırasını korur, fakat yazmayan hop’ları görünmez bırakabilir. Listed first address ile gerçek client’ın aynı olması için ilk trusted writer’ın gözlemi ve daha eski untrusted prefix’in kullanımı açık olmalıdır. Atlas fixture edge’de reset/reconstruct seçtiği için bounded iki element’in provenance’ı tanımlıdır; bu, arbitrary Internet chain için genel bir first-address rule değildir.
WEB-09.01 · Red · Proxy rolleri ve forwarded context ↗Context’in gizlilik ve retention etkisiClient endpoint’i diagnostics için useful olabilir ama user identity değildir ve privacy-sensitive olabilir. for alanındaki full IP’yi bütün internal hops ve logs üzerinde tutmak “güvenli chain”in zorunlu sonucu değildir. Atlas privacy branch ilk writer’da per-request obfuscated alias seçer; IP inference yapılmaz. Bu alias stable tracking identity veya authorization principal olarak kullanılmaz.
WEB-09.01 · Red · Proxy rolleri ve forwarded context ↗Owned edge’de tek reconstruction policyİncelediğin kayıt, örnekteki edge ve proxy işlemlerinin hazırladığı typed context defteridir; canlı proxy log’u değildir. edgeOutbound ile proxyOutbound hangi writer’ın hangi element’i eklediğini, cases ise application’ın peer kontrolü sonucunu gösterir. Privacy dalında _atlasOnce görülebilir, fakat atlanan IP bu kayıttan geri çıkarılamaz. Edge config’inde kabul edilen public authority mapping, observed incoming scheme ve direct client endpoint source’u yazılı olmalıdır. Incoming external context normal request’ten çıkarılır; approved normal fields edge’in own observations’ından yeniden kurulur. Bu policy, bütün unknown HTTP fields’i silmek veya arbitrary client message semantics’i değiştirmek değildir. Forwarded ve legacy X-Forwarded-* compatibility için tek açık contract seçmek conflicting interpretations’ı azaltır.
WEB-09.01 · Blue · Proxy rolleri ve forwarded context ↗Regression provenance kararını gözlemlesinNormal case’te edge rebuild, proxy append ve application context acceptance ayrı local işlemlerdir. Message transfer tamamlandığında receiver receipt state’i güncellenir; acceptance ancak sonraki local gate’te oluşur. Unapproved-peer branch normal typed request’i application’a getirir fakat trust conjunction false olduğu için derived context kullanılmaz. Network receipt, syntactic validity ve policy trust tek success alanına sığdırılmaz.
WEB-09.01 · Blue · Proxy rolleri ve forwarded context ↗Forwarding uyumluluğunu ve privacy’yi koruHTTP/1.1 Connection için reserved close option seçilen inert message’ta current hop’a aittir. Outbound message bu field’ı kaldırır; GET method ve /notes path korunur. Bu canonical örnek bütün protocol framing veya field parsing edge case’lerini çözmez; özellikle HTTP/2 ve HTTP/3’te aynı Connection field’ını taşımak geçerli sayılmaz. Gateway authority mapping ayrı configuration’dır, client-selected proxy için sınırsız rewrite izni değildir.
WEB-09.01 · Blue · Proxy rolleri ve forwarded context ↗rolesRole seçimi plaintext access garantisi değildir.
WEB-09.01 · Proxy rolleri ve forwarded context ↗forwardedElementsParticipating writer’lar soldan sağa sıralıdır; her element kendi incoming context’ini tarif eder.
WEB-09.01 · Proxy rolleri ve forwarded context ↗casesApproved peer/topology/transport/reconstruction conjunction; user permission ayrı kalır.
WEB-09.01 · Proxy rolleri ve forwarded context ↗Kopya kimin için tutuluyor?Duru aynı public Çay sayfasını tekrar açar. Browser HTTP cache tek kullanıcının request’leri için private cache olabilir; shared proxy veya CDN cache ise birden çok client’a hizmet verir. Service Worker Cache Storage farklı bir API ve store’dur. Burada HTTP cache’in neyi saklayıp ne zaman kullanabileceğini inceliyoruz. Shared olması, bir representation’ın her kullanıcıya uygun olduğu anlamına gelmez.
WEB-09.02 · Core · Browser ve shared HTTP cache ↗Age sayacını nereden başlatıyoruz?Saatleri sırayla okuyalım: Date 00:00:00, request_time 00:00:08, response_time 00:00:10 ve gelen Age 12 saniyedir. Hepsi aynı sentetik UTC günündedir. apparent_age = max(0, 10 − 0) = 10; response_delay = 10 − 8 = 2; corrected_age_value = 12 + 2 = 14 olur. Örnek, temkinli hesabı seçer: corrected_initial_age = max(10, 14) = 14. RFC, corrected_age_value’ın doğrudan kullanılmasına da izin verir; max biçimi her implementation için tek zorunlu formül değildir.
WEB-09.02 · Core · Browser ve shared HTTP cache ↗Üç directive üç farklı karar verirField-name argument’i olmayan private, shared cache’in response’u saklamasını engeller; browser’ın private cache’i diğer kurallar uygunsa saklayabilir. Bu bir content encryption veya oturum isolation mekanizması değildir. Aynı biçimdeki no-cache ise saklamayı yasaklamaz: response’un yeniden kullanılması için request’in origin’e iletilmesi ve successful validation gerekir. Age’in lifetime’dan küçük olması bu zorunluluğu kaldırmaz.
WEB-09.02 · Core · Browser ve shared HTTP cache ↗Fresh olmak doğru kullanıcıya ait olmak değildirBir account summary saniyeler önce üretilmiş olabilir ama shared cache’te saklanması policy’ye aykırı olabilir. Cache’in age hesabının doğru olması identity, permission veya representation seçimlerinin doğru olduğunu kanıtlamaz. Hata koşulu personalized response’u public tea gibi kabul etmek ve reuse eligibility’yi yalnız süreye indirgemektir.
WEB-09.02 · Red · Browser ve shared HTTP cache ↗Policy adlarını birbirinin yerine kullanmano-cache’i hiç saklama, private’ı şifreli ve no-store’u geçmişi sil diye yorumlamak üç ayrı yanlış kabul üretir. Fresh no-cache entry’si validation olmadan reuse edilirse yanlıştır; private cache’te private entry bulunması tek başına ihlal değildir. Eski copy’nin no-store sonrası hâlâ var olması da directive’in retroaktif purge olmadığı sınırını gösterir.
WEB-09.02 · Red · Browser ve shared HTTP cache ↗Zaman defterini yeniden hesaplaBuradaki zaman defterini örneğin hesaplayıcısı, validationRequired/validated/reused satırlarını ise sentetik gözlem fixture’ı üretir. Bunlar gerçek cache log’u değildir. Public hit dalında origin’e hiç request gitmez; private ve no-cache dallarındaki origin gözlemi ancak ilgili message ulaştığında vardır. Eksik response veya reuse kaydı, doğru davranışın kanıtı olmaz. Manual exercise’de önce Date, request_time, response_time, received Age ve now alanlarını bul. Apparent age ve response delay’i bağımsız hesapla; selected conservative initial age’i neden 14 seçtiğini söyle. now 20 ve 26 noktalarında resident_time ve current_age’i ayrı yaz. Tek Age header’ını kopyalayarak sonucu tahmin etme.
WEB-09.02 · Blue · Browser ve shared HTTP cache ↗Store ve reuse için ayrı kabul ölçütü yazPublic branch’te eligible ve fresh copy’nin origin’e gitmeden servis edilmesini bekle. Private branch’te shared store false, browser store true seçimini kontrol et. no-cache branch’te response’un tutulabildiğini ama origin validation tamamlanmadan reuse yapılamadığını not et. no-store branch’te yeni response’un tutulmadığını; eski entry için genel purge garantisi olmadığını yaz.
WEB-09.02 · Blue · Browser ve shared HTTP cache ↗clockResponse’un origin/cache transit/local residence hesabı; business modification time değil.
WEB-09.02 · Browser ve shared HTTP cache ↗publicPolicyAynı age için private60/shared30; equality shared fresh false.
WEB-09.02 · Browser ve shared HTTP cache ↗policiesStore, validation ve reuse birbirinden ayrı kararlar.
WEB-09.02 · Browser ve shared HTTP cache ↗priorEntryInLedgerRetainedno-store sonrası eski entry’nin otomatik silindiğini varsaymayan öğretim state’i.
WEB-09.02 · Browser ve shared HTTP cache ↗ETag bir representation gözlemidirDuru, Çay body’sini ETag: "atlas-v1" metadata’sıyla saklamıştır. Bu opaque değer, seçilen representation’ın validator’ıdır; password, object owner ID veya permission değildir. Client değerin nasıl üretildiğini bilmek zorunda değildir. Tag’de v1 yazması da bir timestamp veya kullanıcı identity’si göstermez. Buradaki isimler yalnız revision’ları takip etmeyi kolaylaştırır.
WEB-09.03 · Core · ETag ve conditional requests ↗Conditional GET: eski body hâlâ kullanılabilir mi?Duru If-None-Match: W/"atlas-v1" ile GET gönderir. Origin’in current tag’i "atlas-v1" ise weak match vardır: “hiçbiri eşleşmesin” koşulu false olur ve normal GET content’i yerine 304 döner. If-None-Match weak comparison kullanır; listede strong tag yazmak karşılaştırmayı strong yapmaz. Bu koşulun false olması GET/HEAD için 304, diğer method’lar için 412 sonucu verir.
WEB-09.03 · Core · ETag ve conditional requests ↗If-Match: önceki state’e dayanarak writeDuru v1’e dayanarak bir not değişikliği hazırlamıştır; origin’deki current state artık v2’dir. If-Match: "atlas-v1", PUT’un uygulanmasını current tag ile strong match şartına bağlar. Normal request ve permission kontrollerinin geçtiği bu örnekte verilmiştir. Ardından precondition, method uygulanmadan değerlendirilir. Eşleşme olmadığı için bu senaryo 412 döndürür; update yapılmaz ve v2 korunur.
WEB-09.03 · Core · ETag ve conditional requests ↗Validator’ı izin belgesi yerine koymaETag public response’ta görülebilir. Onu bilmek resource’u değiştirme hakkı vermez; If-Match yalnız observed representation state’iyle current state’i karşılaştırır. Yanlış kabul koşulu matching tag’i authentication veya object permission yerine kullanmaktır. Bir doğru precondition yanlış user policy’yi telafi etmez.
WEB-09.03 · Red · ETag ve conditional requests ↗Metadata/body bağlantısını koparma304’ün body’siz gelmesi cached Çay’ın silinmesini istemez. Hata koşulu matching context’i incelemeden bütün URL kopyalarına yeni headers’i yaymak veya body’yi boşaltmaktır. Ters hata new200 body’sine old v1 metadata bırakmaktır. Sonuç yanlış content gösterimi ve ileride hatalı validation kararı olabilir; privacy etkisi seçilen representation’a bağlıdır.
WEB-09.03 · Red · ETag ve conditional requests ↗304’te iki ayrı byte hesabı yapOrigin örneği response304 ve changed200 kayıtlarını, yerel cache defteri storedBefore ve storedAfter304 kayıtlarını üretir. PUT için requestedBody ile methodApplied/afterBody ayrı alanlardır. Origin’in sıfır content byte’ı, cache’te korunan dört byte’ı yok saymaz; request body’nin varlığı da write yapıldığını kanıtlamaz. Bu kayıtların üreticileri farklı olduğu için byte ve state sonuçlarını ayrı eşleştir. Artifact’taki storedBefore contentOctets=4 ile response304 actualContentOctets=0 farklı gözlemdir. Manual exercise’de new Date ve Cache-Control’ü bul; storedAfter içindeki body’nin hâlâ Çay olduğunu doğrula. Response’ın boş content’i eski body replacement olarak yazılmamıştır. Header güncelleme işlemi browser cache içindedir, yeni origin body transfer’i değildir.
WEB-09.03 · Blue · ETag ve conditional requests ↗Precondition tablosunu elle uygulaComparison rows’da aynı strong pair için strong/weak true; bir weak taraf için strong false/weak true; farklı opaque değer için ikisi false sonucunu yaz. Sonra header’ın mantığını ekle: If-None-Match match olduğunda condition false, If-Match match olduğunda condition true olur. “Match bulundu” ile “request method çalışır” aynı cümle değildir.
WEB-09.03 · Blue · ETag ve conditional requests ↗comparisonRowsOpaque comparison sonucu; precondition true/false sonucu ayrıca belirlenir.
WEB-09.03 · ETag ve conditional requests ↗response304 / storedAfter304Origin content0; matching stored body4 korunur, Date/policy güncellenir.
WEB-09.03 · ETag ve conditional requests ↗changed200Yeni tag/body birlikte replacement; old copy conditional match vermez.
WEB-09.03 · ETag ve conditional requests ↗put412Normal checks passed ve duplicate false supplied; failed strong guard method’ü uygulamaz.
WEB-09.03 · ETag ve conditional requests ↗Duru hangi server’a bağlanıyor?Atlas kitap kataloğunun public URL’si books.example olsun. Duru bu URL’ye giderken seçilmiş mimaride connection’ın server peer’i Atlas’ın application process’i değil, CDN edge’idir. URL’nin public authority’si değişmeden delivery yolu araya başka bir owner eklemiştir. CDN, içeriğin kullanıcılara dağıtımını birden fazla konumdan sağlayan bir ağdır; çizimdeki tek edge bu ağın tamamı değildir.
WEB-09.04 · Core · CDN, edge ve origin ilişkisi ↗Origin rolünü makine adıyla karıştırmaAtlas origin bu örnekte public catalog representation’ını üretir. Response’un kaynağı olmak ile her browser request’inde doğrudan socket peer olmak farklı rollerdir. Origin tek process, load balancer arkasındaki uygulamalar veya Atlas’ın başka bir service’i olabilir. Burada v1 revision’ını üreten tek bir mantıksal origin vardır.
WEB-09.04 · Core · CDN, edge ve origin ilişkisi ↗MISS: iki exchange, üç ownerİlk senaryo boş edge cache ile başlar. Duru public /catalog için GET hazırlar. Edge request’i alınca eşleşen response bulamaz; kendi outbound GET’ini hazırlayıp origin’e gönderir. Origin, Atlas catalog body’sini ve cache metadata’sını hazırlar. Hazırlık adımları local işlemdir; wire yalnız message karşı aktöre ulaştığında gösterilir.
WEB-09.04 · Core · CDN, edge ve origin ilişkisi ↗HIT: origin’in sessiz kalması anlamlıdırİkinci senaryo, ilgili key için yeniden kullanılabilir public v1 entry ile başlar. Edge response’u local entry’den hazırlar; origin’e yeni request göndermez. Origin’in “not contacted” kalması, response’un edge’deki kopyadan geldiğini gösterir. Browser’ın gördüğü body bu senaryoda origin’in yeniden çalışmasının sonucu değildir.
WEB-09.04 · Core · CDN, edge ve origin ilişkisi ↗Personal response’ı public entry yapmaÜçüncü senaryo Duru’nun /notes/mine representation’ını kullanır. Bu route shared cache’i baştan bypass eder; origin response’u da no-store taşır. Edge response’u iletir ama public cache’e yazmaz. Duru/Atlas context’ine izin verilmiş olması örneğin başlangıç koşuludur; burada login veya permission enforcement çalıştırılmaz.
WEB-09.04 · Core · CDN, edge ve origin ilişkisi ↗Her TLS hop’u ayrı güven sınırıdırTLS-terminating edge seçilmişse Browser↔edge ile edge↔origin ayrı güven sınırlarıdır. İlk hop’un güvenli olması ikinci hop’un encryption ve peer verification durumunu tek başına açıklamaz. Cloudflare Full (strict) belgesi, origin certificate verification’ın ayrıca uygulandığı bir vendor örneğidir; bu ders hiçbir Cloudflare setting değiştirmez.
WEB-09.04 · Core · CDN, edge ve origin ilişkisi ↗Bir body’nin hangi owner’dan geldiğini sorBir review’da Duru’nun gördüğü response ile origin access log’unu aynı event sayma. Public HIT branch’inde origin log’u hiç oluşmayabilir; bu normaldir. Edge request, origin request ve Browser observation için ayrı correlation sınırı gerekir. Bu dersin ledger’ındaki originContacted boolean’ı yalnız selected fixture’ın kararıdır; gerçek bir log alanı veya vendor header ismi değildir.
WEB-09.04 · Red · CDN, edge ve origin ilişkisi ↗Başarılı ilk hop bütün zinciri doğrulamazEdge public body’yi önceden tutuyorsa başarılı Browser response, origin’in o an healthy veya reachable olduğunu göstermez. Tersine bir MISS failure da bütün CDN ağına dair outage ölçümü değildir. İnceleme sorusunu küçük tut: bu request için hangi hop çalıştı, hangi owner karar verdi, hangi state gözlendi?
WEB-09.04 · Red · CDN, edge ve origin ilişkisi ↗Public delivery contract’ını açık yazÖrnekte edge adapter’ı cache kararını ve key listesini, origin server’ı ise call sayacını üretir. independentSequence her request öncesi ve sonrası bu iki kaydı eşleştirir: MISS 0→1, HIT 1→1, BYPASS 1→2. HIT sırasında oluşmayan origin request’i için event beklenmez; başka bir trace’te eksik log aynı kararın kanıtı değildir. Atlas için iki route class tanımla: public catalog reusable; personal note bypass ve no-store. Bu bir örnek policy’dir, otomatik URL extension tahmini değildir. Her response’ın body ve cache metadata’sı aynı classification’dan üretilir; public response’ın freshness süresi veya key’i değiştiğinde ilgili fixture beklentisi de değişir.
WEB-09.04 · Blue · CDN, edge ve origin ilişkisi ↗Kontrolü owner sınırında yapBağımsız expected observation’da ilk catalog MISS bir origin request, ikinci catalog HIT sıfır ek origin request, personal GET bir ek origin request üretir. Personal response cache state’ini değiştirmemelidir. Body eşitliği tek başına HIT kanıtı değildir; origin call count ve karar kaydıyla birlikte değerlendirilir.
WEB-09.04 · Blue · CDN, edge ve origin ilişkisi ↗selectedKeyYalnız public catalog için seçilen local cache key; bütün HTTP cache key kurallarının parser’ı değildir.
WEB-09.04 · CDN, edge ve origin ilişkisi ↗originContactedBu request için outbound origin exchange var mı? Body eşitliği tek başına bu bilgiyi vermez.
WEB-09.04 · CDN, edge ve origin ilişkisi ↗originCallsBefore / AfterBağımsız seçilmiş sequence’in expected sayacı; benchmark veya üretim log alanı değildir.
WEB-09.04 · CDN, edge ve origin ilişkisi ↗routeClassPersonal response shared lookup’tan önce bypass edilir ve no-store ile relay edilir.
WEB-09.04 · CDN, edge ve origin ilişkisi ↗Cache key, hangi request’leri eşdeğer sayar?Atlas public catalog’ı Türkçe ve İngilizce gösterebilsin. İki request aynı URL’ye gitse de seçilen representation farklıdır. Cache key, yeniden kullanılabilir response seçerken hangi request’lerin eşdeğer sayıldığını belirler. Yalnız hız için üretilen rastgele bir string değildir. Buradaki profile, GET method’unu, tam public target URI’yi ve Accept-Language değerini birlikte tutar.
WEB-09.S01 · Core · Cache keys, Vary ve personalized content ↗Vary bir request-header eşleşme talebidirOrigin, Vary: Accept-Language ile response seçiminin bu request header’ına bağlı olduğunu belirtir. Örnekte en request’iyle alınmış entry, tr request’i için eşleşen aday değildir. Vary kimlik doğrulamaz ve authorization sağlamaz. Header isimleri response metadata’sında bulunur; karşılaştırılan değerler ise response’u üreten request ile yeni request’ten gelir.
WEB-09.S01 · Core · Cache keys, Vary ve personalized content ↗Matching, fresh ve public ayrı kapılardırNormal durumda request ile stored entry en seçer; current_age = 8, lifetime = 60 ve audience public’tir. Bu bilgiler birlikte HIT kararını verir. Request dili tr olursa entry hâlâ fresh olabilir ama variant match false olur. Freshness, farklı dildeki representation’ı doğru seçim haline getirmez.
WEB-09.S01 · Core · Cache keys, Vary ve personalized content ↗Personalized ve tenant-scoped contentDuru’nun personal note’u için önce shared lookup bypass edilir. Session cookie görmek, Authorization header görmek ve origin’in personal representation üretmesi aynı bilgi değildir. Client’ın yazdığı tenant veya role string’i, response’u public saymak için güvenilir kanıt değildir. Burada route ve audience bilgisi, önceden doğrulanmış policy girdisi olarak verilmiştir.
WEB-09.S01 · Core · Cache keys, Vary ve personalized content ↗Poisoning ve deception neden ayrı kavramlar?Cache poisoning, bozulmuş veya uygunsuz bir response’ın sonraki kullanıcılar için reusable hale gelmesiyle ilgilidir. Cache deception ise sensitive/dynamic content’in yanlış cache classification nedeniyle shared storage’a girmesiyle ilgilidir. İkisinde de cached body doğru diye varsaymak güven sınırını atlar; etkileri ve kararın yanlış verildiği nokta farklıdır.
WEB-09.S01 · Core · Cache keys, Vary ve personalized content ↗Karar kaydı sonucu kadar sınırını da taşısınArtifact’te decision, reason, bodySelected ve originAction ayrı alanlardır. MISS durumunda bodySelected null’dır; model elinde olmayan yeni origin body’sini uydurmaz. VALIDATE kararında da aynı durum geçerlidir. BYPASS bir user denial değildir; burada shared reuse’dan çıkıp origin policy’ye geçme kararıdır.
WEB-09.S01 · Core · Cache keys, Vary ve personalized content ↗Aynı URL sonucunu ayrı kararlarla inceleBir cached 200 görmek doğru audience ve doğru representation seçildiğini göstermez. İlk soruyu küçük tut: bu public entry hangi method, target ve selected request header’ı için alınmıştı? Sonraki request aynı key’e uyuyor mu; stored response gerçekten reusable mı? Bu fixture’ın en→tr karşılaştırması iki ordinary catalog görünümü arasındadır.
WEB-09.S01 · Red · Cache keys, Vary ve personalized content ↗Classification ile representation birlikte tutarlı mı?Inert conflict record’unda public routeClass ile personal audience çelişir. Review sorusu bu çelişkinin hangi layer’da çözüleceğidir: response production ve storage policy aynı approved classification’a dayanmalıdır. Bir URL’nin görünümü tek başına response audience kararı vermez.
WEB-09.S01 · Red · Cache keys, Vary ve personalized content ↗Bir approved reuse profile oluşturBu kaydı üreten, request facts ile stored entry’yi karşılaştıran yerel typed reuse fonksiyonudur. decision/reason/bodySelected/originAction aynı candidate kapsamındadır; gerçek cache access log’u değildir. MISS, VALIDATE ve BYPASS, sonraki owner’dan alınmış sonuç değil, henüz yürütülmemiş iş gereksinimidir. Önce public representation set’ini tanımla; burada yalnız GET public catalog var. Complete target URI ve selected language eşleşmesini koru. Vary’nin söylediği boyut ile origin’in gerçekten seçtiği variant aynı contract’ın parçası olsun. Absent ve unsupported değerler için guessed default yerine açık karar kullan.
WEB-09.S01 · Blue · Cache keys, Vary ve personalized content ↗Independent regression tablosunu owner kararına bağlaNormal en/en HIT, tr/en MISS, age60 VALIDATE ve personal BYPASS için decision ve selected body’yi ayrı doğrula. Son üçünde shared body null kalmalıdır. Public/personal conflict için reject ve missing evidence için not-computed ekle; bu iki sonuç aynı değildir.
WEB-09.S01 · Blue · Cache keys, Vary ve personalized content ↗profileSelected public-only karar kapsamı; her HTTP cache’e ait evrensel policy değildir.
WEB-09.S01 · Cache keys, Vary ve personalized content ↗decision / reasonHIT, MISS, VALIDATE ve BYPASS farklı owner kararlarıdır.
WEB-09.S01 · Cache keys, Vary ve personalized content ↗bodySelectedYalnız matching public fresh HIT’te body seçilir; diğer sonuçlarda null kalır.
WEB-09.S01 · Cache keys, Vary ve personalized content ↗originActionİstenen sonraki flow; bu local modelde HTTP çağrısı çalıştırılmaz.
WEB-09.S01 · Cache keys, Vary ve personalized content ↗policyConflictTrusted declarations arasındaki çelişkiyi reddeden inert counterexample.
WEB-09.S01 · Cache keys, Vary ve personalized content ↗Authority bir routing bilgisidirAtlas public preview servisi books.example authority’sini kabul etsin. Host ve :authority, target resource’un host/port bilgisini taşır; authenticated user veya trusted proxy kimliği değildir. Bir TCP peer address, TLS reference identity, public target ve application route aynı gözlem değildir. Bu ders public target’ın önceden onaylı mapping’e uyduğunu ayrı bir karar olarak tutar.
WEB-09.S02 · Core · Authority, forwarded trust ve parser agreement ↗Forwarded context’i kim yazdı?Bir alan parse edilebilse de kaynağı güvenilir olmayabilir. Forwarded, client veya aradaki node’lar tarafından değiştirilebilir. Trusted proxy listesi, daha önce yazılmış untrusted prefix’i kendiliğinden doğrulamaz. Atlas bu yüzden context’i kabul ederken doğrudan peer’i, hop bütünlüğünü ve alanların güvenilen noktada yeniden kurulmuş olmasını birlikte değerlendirir.
WEB-09.S02 · Core · Authority, forwarded trust ve parser agreement ↗Message boundary bir content değeri değildirTea body’si UTF-8 ile üç octet’tir. Bu normal örnekte known-length framing kullanılır; boundary kontrolü hangi octet’lerin aynı message’a ait olduğunu belirler. HTTP/1.1 body length kuralları method adına veya application’ın JSON okuyabilmesine indirgenemez. RFC 9112 §6.3 precedence ve incomplete-message kurallarını tanımlar; bu ders bütün grammar’ı tekrar uygulamaz.
WEB-09.S02 · Core · Authority, forwarded trust ve parser agreement ↗HTTP version conversion hangi bilgiyi korur?Normal durumda HTTP/2 semantic record’u HTTP/1.1 descriptor’ına dönüştürülür. Method, onaylı public authority, path/query ve content octet’leri korunur. HTTP/2’de stream ve frame sınırları vardır. Content taşıyan bir request veya response’ta content-length bulunuyorsa DATA content toplamıyla tutarlı olmalıdır. Yasak connection-specific alanlar HTTP/2 message’a kopyalanamaz.
WEB-09.S02 · Core · Authority, forwarded trust ve parser agreement ↗Parser agreement neden bir zincir özelliğidir?Edge bir message kabul ettiğinde application’ın aynı message’ı göreceğini varsaymak kolaydır. Oysa owner değişiminde target, field interpretation ve content boundary sözleşmesi korunmalıdır. Desynchronization kök nedeni, farklı layer’ların aynı stream veya translation için farklı message sınırları seçmesidir. Bu ders bu riski defensive invariant üzerinden anlatır.
WEB-09.S02 · Core · Authority, forwarded trust ve parser agreement ↗Observation ile policy decision’ı ayrı kaydetArtifact, ham context yerine provenance category, contextAccepted, boundaryComplete ve dispatchCount kaydeder. Public target validation ile forwarded-context validation ayrı sonuçlardır. Input eksikse not-computed verilir; bunu clean traffic veya security pass diye yorumlama. Bilinmeyen bir conversion profile da dispatch oluşturmaz.
WEB-09.S02 · Core · Authority, forwarded trust ve parser agreement ↗Review sorusu: hangi information authoritative?Bir request summary’de books.example ve https görmek tek başına onay değildir. Hangi bilgi direct observation, hangisi accepted peer’ın reconstruction’ı, hangisi external claim? Atlas artifact’inde authorityApproved ve contextAccepted alanları bu iki soruyu ayrı yanıtlar. Birini diğerinden türetmek, routing kararını provenance kontrolü gibi sunar.
WEB-09.S02 · Red · Authority, forwarded trust ve parser agreement ↗Version adı yerine boundary kanıtını araBir monitoring kaydında h2→h1 görmek dönüşümün doğru olduğunu ispatlamaz. Inbound completeness, outbound known-length descriptor ve korunmuş content üç farklı observations’dır. Artifact’in incomplete branch’inde accepted authority değişmez; failure boundary başka owner’dadır. Bütün reddedilmeleri aynı generic network error altında toplamak bu farkı kaybettirir.
WEB-09.S02 · Red · Authority, forwarded trust ve parser agreement ↗Public target mapping’i açık bir contract yapObservation kaydını typed admission fonksiyonu üretir; facts girdidir, expected karar örneğidir. Descriptor comparison yerel byte dönüşümünü inceler. Authority-denied dalında context ve completeness kontrolü atlanır; incomplete dalında context kabul edilmiş olsa da dispatch yoktur. Gerçek proxy log’u veya wire receipt bu defterde bulunmaz. Atlas profile’ında approved authority books.example ve sabit catalog-preview routeId birlikte seçilir. Unknown authority için guessed default veya serbest internal destination oluşturulmaz. Known public origin ile internal service adresini ayrı config responsibility olarak tutmak, gelen metadata’dan routing authority üretmeyi önler. Bu mapping user authorization’ı çözmez; o karar ilgili application owner’ında kalır.
WEB-09.S02 · Blue · Authority, forwarded trust ve parser agreement ↗Admission ve projection sınırlarını birlikte doğrulaNormal Tea fixture için descriptor’ın method, authority, path/query, bodyHex ve contentLength alanlarını independent expectation ile karşılaştır. Authority denied ve incomplete branch’te descriptor null ve dispatchCount sıfır olmalıdır. Missing evidence not-computed, unknown conversion profile rejected kalır. Bunlar ayrı sonuçlar olduğu için regression kaydı da ayrı reason taşımalıdır.
WEB-09.S02 · Blue · Authority, forwarded trust ve parser agreement ↗authority / fixedRouteIdPublic target validation ve configured route; user identity değildir.
WEB-09.S02 · Authority, forwarded trust ve parser agreement ↗peerClass / contextAcceptedSupplied provenance kararı; direct target kabulünden ayrıdır.
WEB-09.S02 · Authority, forwarded trust ve parser agreement ↗expectedOctets / observedOctets / completeInert completeness evidence; ham message veya parser reproduction değildir.
WEB-09.S02 · Authority, forwarded trust ve parser agreement ↗profile / bodyHexSelected normal semantic projection ve korunmuş Tea octet’leri.
WEB-09.S02 · Authority, forwarded trust ve parser agreement ↗decision / reason / dispatchCountAccepted local record, rejection veya missing evidence; gerçek dispatch çalışmaz.
WEB-09.S02 · Authority, forwarded trust ve parser agreement ↗Browser bir uygulama ortamıdırAdres çubuğu, document ve network socket aynı şey değildir. Browser, gelen bytes’ı web platform kuralları içinde document’e dönüştüren; script çalıştıran, storage ve permissions yöneten, kullanıcıya frame gösteren bir uygulamadır. Bir sayfanın başarısı yalnız server’ın 200 göndermesine bağlı değildir. Response doğru biçimde seçilmeli, document oluşmalı, code ve kaynaklar işlenmeli, sonra kullanılabilir bir görünüm üretilmelidir.
WEB-10.01 · Core · Browser processes ve navigation ↗Process ile thread’i ayırProcess, işletim sisteminin yönettiği bir çalışma ve kaynak sınırıdır; thread o process içindeki execution akışlarından biridir. Chromium, browser UI ve ayrı renderer işlerini process’lere böler. Renderer içinde main thread, compositor ve yardımcı işler bulunabilir; network ve GPU/Viz gibi hizmetlerin yerleşimi de implementation’a bağlıdır. Aynı programın birçok işi yapması, bütün işlerin aynı call stack üzerinde yapıldığı anlamına gelmez.
WEB-10.01 · Core · Browser processes ve navigation ↗Tab sayısı process sayısı değildir“Bir tab, bir renderer” başlangıç için akılda kalır ama güvenilir bir mimari kural değildir. Chromium process model’i document ve worker’ların birlikte yaşama gereksinimlerini, security principal’ı, browsing context group’u ve platform kaynaklarını dikkate alır. Aynı tab içindeki cross-site iframe ayrı renderer kullanabilir; aynı site’a ait ilgili document’lar bazı koşullarda bir process’i paylaşabilir. Site Isolation ve origin-level policy ayrıntıları da platforma göre değişir.
WEB-10.01 · Core · Browser processes ve navigation ↗Navigation intent, response ve commitYeni bir HTML document’e navigation, bir URL adayını seçmekle başlar. Browser loading kararlarını yürütür, gerekirse network response alır ve uygun document hedefini seçer. Redirect varsa final hedef değişebilir; cache veya service worker devredeyse her navigation’ın yeni DNS/TLS yaptığı da söylenemez. Scene, normal HTML response hazır olduğundan sonraki browser/renderer koordinasyonunu seçilmiş bir Chromium profili olarak gösterir.
WEB-10.01 · Core · Browser processes ve navigation ↗Aynı document içinde URL değişebilirKatalog sayfasındaki #summary link’i aynı document’e fragment navigation olabilir. Document kimliği korunurken URL/history ve scroll hedefi değişebilir; yeni HTML response zorunlu değildir. History API ile URL/history update de yeni document yaratmadan adres değiştirebilir, fakat fragment navigation ile tüm observable event davranışları aynı değildir. Bu ders yalnız mevcut #summary hedefi seçilen fragment fixture’ını gösterir.
WEB-10.01 · Core · Browser processes ve navigation ↗Commit, readiness ve pixels ayrı kapılardırDocument.readyState loading, interactive ve complete ayrımı document lifecycle hakkında bilgi verir. DOMContentLoaded genellikle parsing tamamlanıp deferred/module scripts işlendiğinde gelir; tüm image veya async script’leri bekleyen bir “her şey bitti” kanıtı değildir. load daha geniş kaynak yükleme sınırını temsil eder; lazy resource ve sonradan fetch edilen data ayrı kalabilir. Bu events’ten birini ilk görünür pixel’in tam zamanı diye kaydetmek doğru değildir.
WEB-10.01 · Core · Browser processes ve navigation ↗Gördüğün sinyalin sahibini sorYetkili bir incelemede ilk iş “sayfa açıldı mı?” sorusunu gözlemlere bölmektir. Address bar ve final URL, response status/Content-Type, document identity ve rendered view ayrı kaynaklardan gelir. Bir redirect chain’in son URL’sini kaydetmek önceki response’u silmez. Bir dosya indirildiyse HTML document inspect etmeye çalışmak da yanlış nesne üzerinde çalışma olur.
WEB-10.01 · Red · Browser processes ve navigation ↗Navigation record’unu content kararından ayırBir sayfa takıldığında network kaydı eldeki response’u gösterebilir, DOM incelemesi current document’i gösterebilir, performance kaydı ise renderer işlerini açıklayabilir. Bunlar birbirini tamamlar; tek başına bütün timeline’ı kanıtlamaz. İncelemede sürüm, navigation türü ve kullanılan kaynak yolu belirtilir; cache üzerinden gelen response’u yeni bir wire capture gibi sunma.
WEB-10.01 · Red · Browser processes ve navigation ↗Lifecycle ölçümlerini tek completion’a toplamaBu artifact seçilmiş navigation modelinin milestone defteridir. normalEvents içindeki response-ready, renderer-selected, commit-delivered ve confirmation-received farklı owner’lara aittir. Network service’in hazırlığı Browser UI receipt’i değildir; renderer’ın commit bilgisi de browser confirmation’ı değildir. Fragment ve download dallarında yeni HTML commit’i bekleme. Defensive telemetry için request, navigation ve presentation’a ayrı correlation alanları gerekebilir. Bir request ID sadece o exchange’i tanımlar; document identity veya bütün kullanıcı oturumunu tanımlamak zorunda değildir. Client navigation gözlemi ile server trace’in eşleştirilmesi açık bir tasarım ister. Normal artifact A’dan B’ye geçiş için response-ready, commit-delivered ve confirmation kayıtlarını ayrı tutar.
WEB-10.01 · Blue · Browser processes ve navigation ↗Browser isolation ve application policy birlikte çalışırBrowser’ın process ve sandbox sınırları untrusted web content’in platform etkisini azaltmaya yöneliktir. Application’ın tenant, object ve action kararları başka bir katmandır. Güncel browser ve policy davranışı, server-side authorization ile birlikte değerlendirilir. Aynı process’te olmayı yetki kanıtı; farklı process’te olmayı API data güvenliği kanıtı yapma.
WEB-10.01 · Blue · Browser processes ve navigation ↗newDocumentYeni document oluşturulan branch’te B; diğerlerinde null.
WEB-10.01 · Browser processes ve navigation ↗confirmationReceivedBrowser UI/state update için ayrı acknowledgement.
WEB-10.01 · Browser processes ve navigation ↗pixelsMeasuredFalse: lifecycle kaydı first-pixel ölçümü değildir.
WEB-10.01 · Browser processes ve navigation ↗HTML bytes henüz DOM değildirNetwork’ten gelen response body’nin charset bilgisi ve decoding sonucu parser’a bir character stream sağlar. Tokenizer tag, text ve comment gibi tokens üretir; tree construction bu tokens ile Document’i kurar. TCP segment veya HTTP DATA frame sınırı DOM node sınırı değildir. Tek bir p tag’i birkaç network parçasından gelebilir; bir parça da birçok element’i içerebilir.
WEB-10.02 · Core · HTML’den DOM, layout ve paint’e ↗Tree construction bir string copy değildirHTML parsing kuralları eksik veya hatalı markup için tanımlı davranışlar içerir. Document’e html/head/body gibi implied structure eklenebilir; table içindeki tr için source’da yazılmamış bir tbody oluşabilir. Bu nedenle View Source ile Elements panelindeki tree farklı görünebilir. Element seçerken görsel girintiyi değil parent/child ilişkisini takip et.
WEB-10.02 · Core · HTML’den DOM, layout ve paint’e ↗DOM bir canlı data model’idirDOM, Document ve node’ları bir tree üzerinden programlara sunan platform model’idir. JavaScript bu modele erişebilen bir dildir; DOM JavaScript syntax’ının kendisi değildir. Node’ların identity’si, attributes ve current text’i vardır. Response source sabit kalsa bile script bu current state’i değiştirebilir. Bir element’i saklayan referans, onun source dosyasında tekrar yazıldığı anlamına gelmez.
WEB-10.02 · Core · HTML’den DOM, layout ve paint’e ↗CSSOM ile computed style farklı kayıtlarCSS parsing stylesheet kurallarını platform objects olarak erişilebilir hâle getirir. CSSOM’dan okunan authored rule ile bir element’e uygulanan resolved/computed style birebir aynı kayıt değildir. Selector matching, cascade, inheritance ve layout’a bağlı resolved values bu farkta rol oynar. getComputedStyle çıktısını özgün CSS source’u diye sunma; burada yalnız seçilmiş width/height/color/display/visibility değerleri okunur.
WEB-10.02 · Core · HTML’den DOM, layout ve paint’e ↗Render tree bir öğretim kısaltmasıdırDOM ile styles’tan görünür sonuç üretmek için browser layout ve painting data structures kurar. “Render tree” bu ilişkiyi anlatan genel öğretim terimidir; bütün browser’larda tek isimli, DOM ile birebir node eşleşen bir public API tree değildir. Chromium RenderingNG bunu fragment tree, property trees, display lists ve compositor frames gibi farklı artifacts ile açıklar.
WEB-10.02 · Core · HTML’den DOM, layout ve paint’e ↗Layout, paint ve frame presentationLayout boyut ve konum ilişkilerini çözer. Paint çizim talimatlarını üretir; raster bu talimatları pixels/tiles’a dönüştürür; compositing ve draw bunları frame olarak birleştirip sunar. Chromium’da bu işler farklı stages/threads arasında paylaşılır ve gerekmediğinde bazı stages atlanabilir. Her CSS değişikliğini zorunlu tam bir “reflow-repaint” zinciri gibi anlatmak yanıltıcıdır.
WEB-10.02 · Core · HTML’den DOM, layout ve paint’e ↗Source ve current DOM’u aynı delil yapmaYetkili bir incelemede source snippet, parsed DOM ve script sonrası DOM ayrı snapshots olarak kaydedilir. note source’unda Atlas & Web varken current text’in Atlas — revised olması beklenen bir local update olabilir. Current DOM serialization’ını original response body adıyla raporlamak data provenance’ı kaybettirir. Buradaki artifact source ve final text’i yan yana tutar.
WEB-10.02 · Red · HTML’den DOM, layout ve paint’e ↗Geometric ölçümün sınırını koruBir browser testinde width/height değeri normal fixture’ı doğrulayabilir; bütün cihazlarda pixel-perfect sonuç kanıtlamaz. Font, viewport, zoom ve device pixel ratio’nun farklı etkileri vardır. Bu dersin dimensions’ı fixed CSS pixels olarak seçilmiştir; text’in line break veya glyph metrics’i bir baseline gibi uydurulmaz.
WEB-10.02 · Red · HTML’den DOM, layout ve paint’e ↗Data’yı güvenilir context’e yerleştirArtifact authored HTML/CSS ile expected API sonuçlarını yan yana saklar. Yeni browser gözleminde parser DOM text ve TBODY’yi, getComputedStyle style değerlerini, getBoundingClientRect ise CSS px box ölçülerini üretir. expected alanını böyle bir ölçüm yerine koyma; boyut ölçümü screenshot veya paint receipt’i de sağlamaz. Plain text için textContent gibi text odaklı API seçmek, data’nın text olarak işlenmesini açık kılar. HTML parser gerektiren bir ürün özelliği varsa accepted markup ve trust policy ayrıca tasarlanır; parser’ın source’u tree’ye çevirebilmesi authorization veya sanitization kanıtı değildir. Bu ders normal text update yapar; ileri output-context derslerinin yerine bir güvenlik garantisi vermez.
WEB-10.02 · Blue · HTML’den DOM, layout ve paint’e ↗Kontrolleri observable invariant’lara bağlaBu fixture’ın beklenen invariant’ları küçüktür: character reference’ın DOM text’i, implied TBODY, DOM’da kalan hidden node, note’un fixed box ölçüsü ve current text update’i. Bunlar native browser APIs ile gözlenebilir. Paint talimatları ve compositor internals ayrı capture olmadan bu testin verdiği kanıt değildir.
WEB-10.02 · Blue · HTML’den DOM, layout ve paint’e ↗htmlFragmentNetwork capture değil, native parser için normal authored source.
WEB-10.02 · HTML’den DOM, layout ve paint’e ↗expected.impliedTableChildParser’ın source’da yazılmayan table section node’u.
WEB-10.02 · HTML’den DOM, layout ve paint’e ↗expected.noteWidthFixed border-box geometry; screenshot veya paint kanıtı değil.
WEB-10.02 · HTML’den DOM, layout ve paint’e ↗expected.paintCapturedFalse: DOM/geometry gözlemi compositor capture değildir.
WEB-10.02 · HTML’den DOM, layout ve paint’e ↗Engine, host ve browser aynı kutu değildirJavaScript engine ECMAScript code’unu parse edip değerlendirir; implementation bytecode/JIT gibi teknikler kullanabilir. DOM, fetch ve timers ise browser host’unun sunduğu web APIs’dir. Engine’in hangi optimizasyonu yaptığına bakmadan language semantics’i açıklayabiliriz. “JavaScript çalışır” demek bir network request’in tamamlandığını veya DOM’un oluştuğunu söylemez.
WEB-10.03 · Core · JavaScript execution ve event loop ↗Execution context ve call stackExecution context, ECMAScript specification’ın code evaluation ilerlemesini takip ettiği bir model’dir. Function, Realm ve environment ilişkileri bu modelin parçalarıdır; script’in doğrudan okuyabildiği bir “context object” olmak zorunda değildir. Running context stack’in üstündedir; nested function çağrısı yeni context ile control’u ilerletir. Exception ve async suspension gibi davranışlar için bütün context geçişleri basit bir çizimin aynısı değildir.
WEB-10.03 · Core · JavaScript execution ve event loop ↗Event loop callback için bir sıra kurarHTML event loop scripts, user interaction, networking ve rendering gibi işleri koordine eder. One event loop’un birden fazla task queue’su olabilir; farklı task source’lar arasında browser’ın scheduler tercihleri vardır. Bu model’i bütün network,click ve timer callbacks için tek global FIFO queue olarak çizmek doğru değildir. Microtask queue da sıradan task queue’su değildir.
WEB-10.03 · Core · JavaScript execution ve event loop ↗Promise executor synchronous, reaction microtasknew Promise(executor) executor function’ını creation sırasında synchronous çağırır. resolve çağrısı Promise’i fulfilled yapabilir; then reaction current synchronous satırların arasına girmez, uygun checkpoint’te microtask olarak çalışır. “Promise içinde” görülen her code’u async saymak executor ile reaction’ı karıştırır.
WEB-10.03 · Core · JavaScript execution ve event loop ↗Await control’u askıya alır, thread açmazBir async function await noktasına kadar synchronous ilerleyebilir. Await’in devamı fulfilled bir Promise için de daha sonra reaction işiyle yürür; caller kendi synchronous işine devam edebilir. Await kullanmak bağımsız CPU thread’i oluşturmaz. Başka agent/worker ile paralel iş ayrı bir mechanism ve iletişim sınırı gerektirir.
WEB-10.03 · Core · JavaScript execution ve event loop ↗DOM update bir frame receipt değildirCallback DOM state’ini değiştirebilir; browser rendering opportunity’de bu state’ten yeni görünüm üretir. Current HTML processing model, window rendering işini rendering task source üzerinden schedule eder. Her task sonrasında zorunlu yeni paint veya bütün callback’lerden sonra sabit bir refresh olduğunu varsayma. Hidden document ve unnecessary rendering gibi koşullar da rendering’i etkiler.
WEB-10.03 · Core · JavaScript execution ve event loop ↗Sıralamayı timing ile karıştırmaYetkili bir incelemede log order küçük bir dependency’yi doğrular; “0ms timer” etiketi callback’in tam0ms içinde çalıştığını doğrulamaz. Network paneli, console ve DOM snapshot’ı da farklı observation owners’a aittir. Callback’in çağrıldığını görmen response body’nin tamamını tükettiğini veya persistent action’ın commit edildiğini kanıtlamaz.
WEB-10.03 · Red · JavaScript execution ve event loop ↗Context çizimi engine capture değildirFunction boundary’lerini anlatmak için stack alias’ları kullanılır. Browser error stack’i veya performance sample aynı görünümü zorunlu olarak üretmez: implementation optimizasyonları, source mapping ve async stack tooling’i farklı representations verir. Source ile gözlenen frame’in hangi sürüme ait olduğunu belirle; çizimdeki üç kutuya bakıp native memory sonucu yazma.
WEB-10.03 · Red · JavaScript execution ve event loop ↗Async için açık completion contract kurLog satırlarını seçilmiş synchronous kod, Promise reaction, queueMicrotask callback’i ve timer callback’i üretir. expectedLog beklenen sıradır; yeni bir çalıştırmanın console kaydı değildir. Callback’in yazdığı label hangi işin bittiğini söyler; body tüketimi, server commit veya DOM/pixel sonucu bu fixture’da üretilmez. Application code hangi callback’in neyi tamamladığını açık tutmalıdır. Data received,body consumed,validated,DOM updated ve server committed aynı olaylar değildir. UI durumunu ilerletirken doğru completion sınırını seç; Promise fulfilled olması yalnız o Promise’in temsil ettiği işe dair sonuçtur. Ürün contract’ı daha fazla işlem gerektiriyorsa bu adımlar ayrıca modellenir.
WEB-10.03 · Blue · JavaScript execution ve event loop ↗Responsiveness ve kanıt ayrı değerlendirilirBir main-thread işi uzun sürerse user interaction ve renderer work gecikebilir. Async keyword tek başına CPU maliyetini başka thread’e taşımaz; bounded work veya uygun worker tasarımı ayrı değerlendirilir. Bu ders stall süresi,device speed veya bütün browser’lar için refresh guarantee üretmez. Native fixture kısa ve sonlu callback’lerden oluşur.
WEB-10.03 · Blue · JavaScript execution ve event loop ↗expectedLogBir normal synchronous başlangıç ve bounded checkpoint’in sıra sonucu.
WEB-10.03 · JavaScript execution ve event loop ↗timerDelayArgumentScheduling isteği; ölçülmüş callback süresi değildir.
WEB-10.03 · JavaScript execution ve event loop ↗executionContextModelSpec model’i anlatır; script’in okuyabildiği native context object değildir.
WEB-10.03 · JavaScript execution ve event loop ↗paintCapturedFalse: callback sırası pixels’in sunulduğu zamanı kanıtlamaz.
WEB-10.03 · JavaScript execution ve event loop ↗Resource keşfi execution değildirDuru’nun Atlas sayfası HTML’den CSS, image ve script URL’leri keşfeder; JavaScript ayrıca Fetch veya XMLHttpRequest başlatabilir. Browser scheduling, cache lookup, network ve decode/execute farklı işlerdir. Bir URL’nin Network tablosunda görünmesi onun body’sinin tamamlandığını veya script’in çalıştığını söylemez. Preload/scanner erken keşif yapabildiğinden bütün request sırasını DOM parser’ın yürüdüğü sıra diye okumak da doğru değildir.
WEB-10.04 · Core · Resource, script ve request loading ↗Download sırası ile execute sırası farklıdırİki external classic script defer ile A sonra B yazılmış olsun. Fetch parsing ile paralel ilerleyebilir; B önce hazır olsa bile bu parser-inserted deferred pair A sonra B olarak, document parsing bittikten sonra execute edilir. DOMContentLoaded bu deferred execution’ın tamamlanmasını bekler. Bu event bütün image’lerin yüklenmesini veya application’ın bütün async işlerini bitirmesini garanti etmez.
WEB-10.04 · Core · Resource, script ve request loading ↗Response, body ve status ayrı kapılardırFetch Promise status ve headers kullanılabilir olduğunda Response ile fulfill olabilir; body henüz streaming olabilir. response.text()/json() ayrı async consumption’dır. Body disturbed/locked olduğunda tekrar kullanımı sınırlandırılır; ikinci kez aynı body’yi okumayı varsayma. json() parse failure da HTTP status failure’dan ayrıdır. GET fixture’ında request body yoktur; Fetch GET/HEAD için non-null request body kabul etmez.
WEB-10.04 · Core · Resource, script ve request loading ↗Yüklenmiş kaynak trusted sonuç değildirLoading order bir dependency contract’ıdır. A’nın B’den önce gerekli state’i kurması gerekiyorsa async pair ile request’lerin declaration sırasına güvenmek yanlış kabul koşuludur. Etki undefined dependency, eksik DOM update veya yarım UI state olabilir. Script downloaded observation’ı state initialization’ın tamamlandığını kanıtlamaz.
WEB-10.04 · Red · Resource, script ve request loading ↗Cancellation ve completion’ı fazla yorumlama404 için fulfilled Promise’ı successful action sayan client yanlış UI kararına gider. Diğer uçta aborted request’i server hiç görmedi diye kabul etmek gözlem sınırını aşar. Condition response status, body state ve client outcome’un ayrı tutulmamasıdır; impact uygulamanın operation’ına bağlıdır.
WEB-10.04 · Red · Resource, script ve request loading ↗Loading defterinde iki sıra tutLoading kayıtlarının üreticileri parser’ın declaration’ı, loader’ın ready bilgisi ve script’in evaluation sonucudur. API kayıtlarında Fetch/XHR status ile body reader’ın tamamlanması ayrı tutulur. Selector ise yalnız authored status/acceptedAsHttpSuccess satırlarını okur; gerçek Browser log’u veya server commit ölçümü değildir. Artifact’ta declarationOrder A/B, readyOrder B/A ve deferredExecution A/B alanları ayrıdır. Manual exercise’de hangi script attribute’unun execution sırasını koruduğunu söyle; B downloaded adımında executed list’inin hâlâ boş olduğunu kontrol et. Async branch’te seçilen B/A execution mümkündür ama normal sonuçların tamamı değildir.
WEB-10.04 · Blue · Resource, script ve request loading ↗API sonucu üç alanda anlat404 Fetch için promise=fulfilled-response, status404/okfalse ve body consumption outcome’unu ayrı yaz. XHR row’da event=load ile status404 beraber bulunur. Abort-after-headers row’unda Response var ama bodyRead=AbortError’dır. Selector status>=400 olduğu halde acceptedAsHttpSuccess=true olan inconsistent observation’ı seçer; normal0, positive1 ve missing0 sonucunun evidence sınırını açık tut.
WEB-10.04 · Blue · Resource, script ve request loading ↗readyOrder / executionResource availability ile JavaScript evaluation iki ayrı sıra.
WEB-10.04 · Resource, script ve request loading ↗fetch404 / xhr404API completion ile HTTP success ayrı; load/fulfilled 404 mümkündür.
WEB-10.04 · Resource, script ve request loading ↗abortAfterHeadersHeaders arrival korunur; incomplete body read abort olabilir.
WEB-10.04 · Resource, script ve request loading ↗cacheChoicesBrowser HTTP cache seçimi; Cache API veya bütün proxy policy’si değil.
WEB-10.04 · Resource, script ve request loading ↗Iframe yeni document context’i açarTop-level tab ile içindeki iframe farklı document’lar barındırır. HTML Standard navigable’ı tab/window/iframe gibi kullanıcıya dönük gezinme yapısıyla; browsing context’i WindowProxy çevresinde document sequence’i ile anlatır. Bunları işletim sistemindeki process sayısıyla bire bir eşitleme. Bir iframe parent DOM’a eklenen sıradan subtree değildir: child document kendi URL’si, global Window’u ve loading yaşam döngüsüyle gelir.
WEB-10.05 · Core · Browsing contexts, workers ve service workers ↗Worker computation, window presentationDedicated Worker ayrı WorkerGlobalScope üzerinde çalışır; doğrudan window veya document DOM’u yoktur. Bu “ağa veya storage’a erişemez” demek değildir: worker türüne ve API’ye göre Fetch ve IndexedDB gibi yetenekler bulunabilir. Window iş yükünü mesajla verir, worker sonuç döndürür, DOM update’ini window gerçekleştirir. Bu ownership ayrımı responsiveness sağlar; her işin paralel zamanda bitmesini veya security isolation’ın tüm biçimlerini garanti etmez.
WEB-10.05 · Core · Browsing contexts, workers ve service workers ↗Registration, control ve offline coverageService Worker registration belirli origin/storage key ve scope URL’si altında script’i kaydeder. API secure context gerektirir; yerel trustworthy localhost eğitim fixture’ı normal HTTPS yayınını ölçmez. register() fulfillment, installing/waiting/active state ve mevcut document’in controller’ı aynı gözlem değildir. ready matching registration’da active worker bulunduğunu anlatır; controller mevcut client’in worker’ını veya null değerini verir.
WEB-10.05 · Core · Browsing contexts, workers ve service workers ↗Context’leri tek authority gibi okumakIframe’in origin’i veya Worker’ın ayrı global’i application permission değildir. Aynı origin child DOM erişimi seçilmiş örneğin browser kuralıdır; tenant, user ve object yetkisini server belirler. Message içinde gelen jobRef veya role alanını kontrolsüz trusted state saymak, transport ile karar sahibini birbirine karıştırır. Etki uygulamanın bu bilgiyi nasıl kullandığına bağlıdır; sıradan sum hesaplaması tek başına güvenlik açığı göstermez.
WEB-10.05 · Red · Browsing contexts, workers ve service workers ↗Cached response’un sınırını koruBir controlled client’in cached response alması origin’in o anda yeni permission check yaptığını kanıtlamaz. Personalized state’i yanlış lifecycle ile tutmak eski UI veya gereksiz veri kalıcılığı yaratabilir; etki cache planı, principal ve invalidation’a bağlıdır. Bu ders public Offline note saklar, identity/session verisi saklamaz. Handler coverage ve entry freshness application’ın açık kararları olmalıdır.
WEB-10.05 · Red · Browsing contexts, workers ve service workers ↗Document ve message sahipliğini kaydetClone/transfer defterinde Window gönderim anındaki input ve sender length’i, Worker kendi kopyası/receiver length’i ve sum sonucunu, Window da alınan jobRef sonrası DOM güncellemesini sahiplenir. Bunlar local MessageEvent sınırlarıdır, HTTP hop’ları değildir. Offline dalındaki Cache Storage hit’i origin event’i üretmez; entry yokken offline miss de origin’e ulaşmış request kanıtı vermez. Parent URL ile iframe URL’sini, selected origin ilişkisini ve aktif document’leri önce ayır. Aynı origin fixture’da parent title Parent note, frame title Frame note ve iki document identity’si farklıdır. Bu gözlem browser policy sınırında kalır; OS process mapping veya cross-origin erişim claim’i eklenmez. Navigation sonrası eski referansı current state diye raporlama.
WEB-10.05 · Blue · Browsing contexts, workers ve service workers ↗Offline planını explicit coverage ile doğrulaRegistration script ve scope’u kaydet; register resolved, ready active ve controller değerini ayrı gözle. İlk document uncontrolled ve reload sonrası controlled sonuçları, clients.claim/skipWaiting kullanılmayan temiz profile fixture’ında beklenen akıştır. Update waiting veya eviction gerçek ortamda başka dallar açar; bu küçük örnek bunların native ölçümünü yaptığını iddia etmez.
WEB-10.05 · Blue · Browsing contexts, workers ve service workers ↗iframeAyrı document’lar; yalnız aynı origin erişimi supplied.
WEB-10.05 · Browsing contexts, workers ve service workers ↗workerClone / workerTransferKopya mutation ile detached buffer ownership’i farklıdır.
WEB-10.05 · Browsing contexts, workers ve service workers ↗registrationActive registration ve current controller farklı gözlemler.
WEB-10.05 · Browsing contexts, workers ve service workers ↗cachePlanExplicit public entry; hit ve offline miss ayrıdır.
WEB-10.05 · Browsing contexts, workers ve service workers ↗Önce capture contract’ıDeveloper Tools observation aracıdır; otomatik application correctness veya vulnerability hükmü değildir. Network panel açık ve recording aktifken yapılan request’leri gösterir. İlgili action’dan önce aç, recording ve filter seçimini kaydet; navigation boyunca zinciri korumak istiyorsan Preserve log seçimini explicit tut. Paneli action’dan sonra açıp boş table görmen request yapılmadığını kanıtlamaz. Cached veya Service Worker response da kayıtta görünebilir; her satır yeni origin round trip değildir.
WEB-10.06 · Core · Developer Tools ile gözlem yapmak ↗Response HTML ve live DOM aynı artifact değildirElements aktif DOM tree’sini gösterir. Response HTML başlangıç content’idir; browser parsing’i tree oluşturur, script sonradan node/text değiştirebilir. Artifact’te başlangıç p#result Loading iken client 404 content’i okuduktan sonra Not found olur. Bu fark server’ın HTML’ini sonradan değiştirdiğinin kanıtı değildir. View Source veya document response body’si ile live Elements gözlemini ayrı zamanda ve aynı navigation’a bağla.
WEB-10.06 · Core · Developer Tools ile gözlem yapmak ↗Evidence paylaşırken kapsam ve hassas alanlarHAR, captured exchange’leri belirli JSON formatında export edebilir. Chrome’un varsayılan sanitized seçimi Cookie, Set-Cookie ve Authorization gibi headers’i dışarıda bırakır. Bu, URL query, request/response body veya application identifier’larının her durumda anonimleştirildiği garantisi değildir. Paylaşılacak content’i ayrıca incelemek ve yalnız gerekli bounded observation’ı tutmak gerekir.
WEB-10.06 · Core · Developer Tools ile gözlem yapmak ↗Görünür state’i authority saymaLocal DOM text veya storage value backend permission’ın yerine konursa gözlem karar sınırını aşar. Preview yazan bir node application response’unu farklı gösterebilir; bu normal client edit’inin server object’i değiştirildiğini kanıtladığı söylenemez. Condition local presentation ve authoritative state’in aynı kabul edilmesidir; impact bunu kullanan application decision’a bağlıdır. Bu ders server policy bypass deneyi üretmez.
WEB-10.06 · Red · Developer Tools ile gözlem yapmak ↗Export yeni veri paylaşımıdırSanitized HAR header filtering’i bütün content privacy’si gibi yorumlanırsa query/body’de kalan hassas application data istemeden taşınabilir. Ayrıca filtered table’dan export bütün journey’yi kapsamayabilir. Condition export scope ve field inspection’ın atlanmasıdır; burada yalnız public note path’i ve harmless text paylaşılır, credentials/cookies/account data capture edilmez.
WEB-10.06 · Red · Developer Tools ile gözlem yapmak ↗Tek request için karşılaştırma defteriBu bundle bir authored gözlem projection’ıdır; yeni DevTools capture’ı değildir. Network satırı browser’ın request/response gözlemine, Elements current DOM’a, Console mesajı application logger’ına, theme kaydı ise origin-scoped localStorage’a karşılık gelir. Capture-gap dalında sayfanın sonuç göstermesi, geç açılan panelin eski request’i kaydettiğini göstermez; server session store burada gözlenmez. Harmless local note action’ından önce Network recording’i aç ve filter/context seçimini kaydet. Method GET, path /notes/missing, status404 ve content Not found’un aynı exchange’e ait olduğunu kontrol et. Fetch fulfillment’ın status check’ini otomatik yapmadığını ve Console message’ının application tarafından üretildiğini gözle. Response body henüz complete değilse absent content’i boş successful result gibi raporlama.
WEB-10.06 · Blue · Developer Tools ile gözlem yapmak ↗Observation sınırını teslimde koruNetwork Timing’de görülen phase’leri isimleriyle tut; server database duration için değeri absent bırak. Initiator script ise bunun browser initiation evidence’i olduğunu belirt. Recording geç açılmış branch’te empty table yalnız capture gap’tir. Tekrar observation yapılıyorsa action’ın benign ve local kaldığını, yeni capture’ın önceki missing evidence’i geriye dönük yaratmadığını koru.
WEB-10.06 · Blue · Developer Tools ile gözlem yapmak ↗network / captureExchange field’leri capture kapsamıyla okunur; invented timing yok.
WEB-10.06 · Developer Tools ile gözlem yapmak ↗document / consoleOriginal HTML, live DOM ve application log farklı observation’dır.
WEB-10.06 · Developer Tools ile gözlem yapmak ↗storageClient preference backend session/permission kanıtı değildir.
WEB-10.06 · Developer Tools ile gözlem yapmak ↗sharing / captureGapMinimal projection ve missing evidence sınırları explicit.
WEB-10.06 · Developer Tools ile gözlem yapmak ↗Control’dan entry list’eAtlas’ın search form’u Tea & Bread başlığını q adıyla taşır; input’un id’si label/DOM lookup için kullanılırken name submission anahtarıdır. Entry list bütün görünen control’ların kopyası değildir: disabled control, unchecked checkbox, isimsiz alan ve seçilmemiş submit button dışarıda kalır. Readonly text control disabled değildir ve name’i varsa gönderilebilir. Aynı tag adı web/http için iki kez bulunur; entry list bunu ordered iki entry olarak korur. Plain object’e hemen çevirmek repeated field’ı kaybettirebilir. Hidden veya readonly value server için trusted identity değildir; bunlar UI/submission özellikleridir.
WEB-10.S01 · Core · Forms, JavaScript ve DOM data flow ↗Submission birden fazla karar içerirNormal submitter seçildikten sonra browser constraint validation ve cancelable submit event’i değerlendirir; listener preventDefault ile default navigation’ı durdurabilir. Seçilmiş native GET branch’ı UTF-8 URL-encoded entries ile navigation request’i hazırlar. fetch branch’ında listener default’u durdurur ve kendi ordinary read request’ini ayrıca hazırlar; fetch çağrısı native form navigation değildir. requestSubmit normal submitter/validation/event yolunu kullanır; submit() doğrudan yolunun aynı event/validation davranışını verdiği varsayılmaz. Browser kontrolü kullanıcı deneyimidir; server q tür/boyut contract’ını ve resource policy’yi ayrıca değerlendirir.
WEB-10.S01 · Core · Forms, JavaScript ve DOM data flow ↗JavaScript value, function ve lexical scopeText control’dan okunan "2" string’dir; string + number concatenation yapabilir, explicit Number dönüşümü ise ayrı number üretir ve domain kontrolü hâlâ gerekir. null ile undefined veya missing field aynı uygulama anlamı değildir. let/const block scope taşır; var’ın function scope’u farklıdır. const object binding’ini sabitler, içindeki title’ı otomatik immutable yapmaz. Function input/return sınırını açık tutmak DOM okuma ile normalize/policy/render kararını ayırır. Callback lexical çevresindeki q binding’ine closure ile erişebilir; bu binding’in captured olması input’u trusted yapmaz. Scene’de JS/body parse/DOM update local’dir; function çağrısı ayrı network paketi gibi çizilmez.
WEB-10.S01 · Core · Forms, JavaScript ve DOM data flow ↗Client state’i server authority sanmakForm q alanının required olması yalnız seçilmiş browser’ın normal submit yolunda boş değer için UI feedback sağlar. Readonly veya hidden alanın görünümü, server’ın bu değeri subject/tenant olarak kabul etmesini haklı çıkarmaz. Güven sınırı request receiver’da bulunur: entry string’i decode edilir, tür/boyut/iş anlamı ve server-owned identity bağlamı değerlendirilir. Bu derste Red lens gerçek form üzerinde değişiklik denemesi üretmez; trusted context ile taşınmış UI değeri arasında hangi varsayımın bozulabileceğini contract’tan çıkarır. Native ve fetch branch’ları aynı server kuralını kullanmalıdır.
WEB-10.S01 · Red · Forms, JavaScript ve DOM data flow ↗Bir local dönüşüm sessiz veri kaybı yaratabilirRepeated tag entry’lerini single-key object’e indirgemek, submitter’ın mode değerini unutmak veya + işaretini yanlış çözmek ordinary request’in anlamını değiştirir. Tea & Bread’daki ampersand başlığın parçasıdır; URL serializer onu field separator gibi bırakmaz. String "2" ile number 2’yi bilinçsizce eşitlemek de limit veya UI hesaplarını şaşırtabilir. Closure kullanıldığı için son response’un doğru aramaya ait olduğu otomatik söylenemez: async reply order ve correlation ayrıca tasarlanır. Client validation denied veya listener cancel branch’ında server kartının değişmemesi beklenir; olmayan request’i başarılı server validation diye sayamayız.
WEB-10.S01 · Red · Forms, JavaScript ve DOM data flow ↗Entry, conversion ve policy için açık contractForm defteri authored controls, entries ve branch koşullarını sağlar; URLSearchParams yerel encoding sonucunu üretir. Gerçek Browser gözleminde submitter/constraint/submit event’ini browser, q tür/boyut ve read kararını server, response parse ve textContent sonucunu client handler üretir. Yerel iptal dallarında server producer’a ulaşılmış değildir. Form control inventory’si name/type/checked/disabled/readonly ve submitter etkisini belirtir; repeated field’lar entry list olarak korunur. Seçilmiş GET profile q/tag/mode’u URLSearchParams ile encode eder; decoding sonunda aynı string ve ordered tags geri gelmelidir. File veya multipart sınırları ayrı contract’tır ve bu text-only fixture onlara davranış atfetmez. Normalize fonksiyonu raw string’den ayrı çıktı verir; Number dönüşümü, finite/domain kontrolü ve string output farklı işlemlerdir. Server subject/tenant’ı kendi trusted bağından alır; form alanı bu bağı oluşturmaz.
WEB-10.S01 · Blue · Forms, JavaScript ve DOM data flow ↗Local DOM outcome’u response receipt’inden ayırNative navigation response’u yeni document parser yoluna, fetch response’u handler’ın body okuma ve UI update yoluna gider. Headers/status’ın gelmesi body parse veya DOM update’in tamamlanması değildir. Fetch handler normal book title’ı ordinary h2.textContent ile yazar; HTML pre-escaping bu setter için gerekmez. Function/scope örnekleri Node’da plain data üstünde gerçekten hesaplanabilir, fakat Node’da closure testinin geçmesi submit event, constraint validation veya DOM parser’ın çalıştığı anlamına gelmez. Regression branch’ları normal native/fetch, invalid constraint ve listener cancel için wire/local decision sınırını ayrı kaydeder.
WEB-10.S01 · Blue · Forms, JavaScript ve DOM data flow ↗controlsSabit text-only control inventory; checkbox ve submitter inclusion açık.
WEB-10.S01 · Forms, JavaScript ve DOM data flow ↗entriesOrdered repeated tag entries korunur.
WEB-10.S01 · Forms, JavaScript ve DOM data flow ↗encodedNormal title’ın UTF-8 form URL encoding representation’ı.
WEB-10.S01 · Forms, JavaScript ve DOM data flow ↗branchesConstraint/event/default navigation ile explicit fetch kararı ayrı.
WEB-10.S01 · Forms, JavaScript ve DOM data flow ↗jsFixturesFinite native type/coercion/function/closure/scope sonuçları.
WEB-10.S01 · Forms, JavaScript ve DOM data flow ↗Output context interpreter’ı seçerTea & Bread aynı string olsa da h2 text node, serialized HTML text, quoted title attribute, JSON data ve URL query farklı tüketicilere gider. h2.textContent ataması HTML parser çalıştırmaz; string’in kendisi verilmelidir. Serialized HTML source’ta ampersand, entity encoding ile korunur. Quote içindeki title attribute içinse dış quote sınırını da koruyan attribute encoder gerekir. Attribute adı da önemlidir: title gibi plain text attribute için doğru olan karar, URL veya event-handler attribute’una taşınamaz. Context, input’un nereden geldiği değil, son tüketicinin onu nasıl yorumladığıdır.
WEB-10.S02 · Core · Output contexts, XSS ve DOM trust boundaries ↗Reflected/stored ile DOM aynı eksen değildirReflected veri normal request/response döngüsünde geri gösterilir; stored veri persistence’tan daha sonraki görüntülemeye gelir. Bu lifetime ayrımı encoding kararını vermez: database’de tutulması user-controlled text’i trusted markup yapmaz. DOM-based risk ise client code’un source’tan aldığı değeri interpretation yapan sink’e taşımasıyla ilgilidir; reflected veya stored veri client-side DOM yoluna da girebilir. XSS için untrusted influence, executable interpretation ve document authority altında execution gibi koşulların oluşması gerekir. Buradaki harmless em formatting declaration veya Tea & Bread sonucu tek başına XSS kanıtı değildir; mekanizma ve kontrol sınırı öğretilir.
WEB-10.S02 · Core · Output contexts, XSS ve DOM trust boundaries ↗Source provenance ile sink amacı birlikte okunurSource ledger normal URL query, fetched book JSON veya stored title alias’ını gösterebilir; source’ın aynı origin’den gelmesi title’ı HTML instruction yapmaz. Sink ledger ordinary textContent için literal text, innerHTML için fragment parsing ve URL assignment için URL parsing/policy seçimini açıklar. JavaScript data için JSON serialization bir değer representation’ı oluşturur; bunu inline script veya event-handler source’a yapıştırmak ayrı context ve escaping problemidir. Bu fixture JSON’u data olarak parse etmeyi seçer, dynamic script üretmez. URLSearchParams query value sınırını korur; URL scheme/origin/path policy’sini kendiliğinden onaylamaz. Source-to-sink adımları aynı browser’daki local işlemlerdir.
WEB-10.S02 · Core · Output contexts, XSS ve DOM trust boundaries ↗Harmless parser sonucu güvenlik sertifikası değildirFixed <em> formatting text’i markup parser’a verirseniz emphasis structure beklenir; aynı bytes ordinary textContent’a verilirse markup syntax literal text olarak kalır. Bu fark data’nın instruction olarak yorumlanabildiğini anlatır, executable attack veya vulnerability reproduction oluşturmaz. Gerçek risk değerlendirmesi untrusted influence ve active semantics koşullarını ayrıca ister. Bir benign title’ın doğru görünmesi bütün input domain’inin güvenli olduğunu kanıtlamaz; source, transformation, sink ve surrounding grammar tanımlanmadan generic "escaped" etiketi yetersizdir.
WEB-10.S02 · Red · Output contexts, XSS ve DOM trust boundaries ↗Trust etiketi context bilgisinin yerine geçmezSaved title’ın stored olması sadece persistence provenance’ını değiştirir. Aynı-origin response, JSON parse success veya HTML entity encoder’ın çalışması business identity veya bütün output context’leri için güven kanıtı değildir. HTML-text encoding sonucunu textContent’a verirseniz Tea & Bread entity metni literal görünebilir; bu double/wrong-context dönüşüm usability hatasıdır, XSS gerçekleştiği iddiası değildir. URL encoding de approved destination listesi yerine geçmez. Fixed HTTPS external example host branch’ı local allowlist’te reddedilir; hiçbir bağlantı kurulmaz. Red lens bütün bu etiketlerin hangi dar soruyu cevapladığını ayırır.
WEB-10.S02 · Red · Output contexts, XSS ve DOM trust boundaries ↗Plain text’i plain text API’de tutBu kayıtların üreticisi finite source/encoder/policy defteridir. contexts representation ile interpretation beklentisini, sourceRows lifetime’ı, urlRows ise yerel destination kararını taşır. actualDOM=false ve actualHTMLParser=false olduğundan expected tree veya literal text yeni Browser gözlemi değildir; URL deny’de consumer’a link ataması seçilmez. Title için ordinary textContent veya createTextNode gibi text API tercih edilir; HTML pre-encoding yapılmaz ve element/attribute isimleri application-owned kalır. Normal title attribute DOM API ile atanıyorsa string değeri attribute value olarak kalır; serialized HTML source üretilecekse ayrı quoted attribute encoding gerekir. HTML source, URL component ve JSON data encoder’larını aynı global sanitize fonksiyonuna indirmeyin. Bu derste finite benign string’lerin transformation sonuçları native runtime’da hesaplanabilir, fakat bu gözlem bütün parser grammar’ı veya browser sink güvenliğini doğrulamaz.
WEB-10.S02 · Blue · Output contexts, XSS ve DOM trust boundaries ↗Provenance ve final interpreter için regressionReview tablosu her data value için source alias, storage lifetime, transform, final sink ve expected interpretation yazar. Reflected/stored normal title aynı literal outcome’u vermeli; benign formatting declaration textContent branch’ında Text beklentisi taşımalı. JSON data’yı decode edip title string’i elde etmek, script source üretmekten ayrıdır. URL test’i percent-encoded title’ı geri çözmeli ve selected https/owned-origin/books-path policy’sini ayrıca kontrol etmelidir. Local deny branch’ı DOM link outcome’u üretmez. Actual browser HTML parsing, XSS execution veya arbitrary student code bu eğitim modelinde çalıştırılmaz; kontrol akışı ve native finite encoding evidence ayrı kaydedilir.
WEB-10.S02 · Blue · Output contexts, XSS ve DOM trust boundaries ↗contextsAynı harmless value için farklı representation/consumer.
WEB-10.S02 · Output contexts, XSS ve DOM trust boundaries ↗sourceRowsReflected/stored/response provenance data olarak kalır.
WEB-10.S02 · Output contexts, XSS ve DOM trust boundaries ↗benignMarkupFixed em declaration; text ve structure beklentisi ayrı, execution yok.
WEB-10.S02 · Output contexts, XSS ve DOM trust boundaries ↗doubleEncodingWrong-context display farkı; XSS sonucu iddiası değil.
WEB-10.S02 · Output contexts, XSS ve DOM trust boundaries ↗urlRowsFixed reserved example URL’ler sadece local policy’de okunur.
WEB-10.S02 · Output contexts, XSS ve DOM trust boundaries ↗Autoescaping hangi context’te korur?Template autoescaping, title’ı output grammar içinde data olarak tutar; application’daki bütün alanları trusted output yapmaz. Plain title için text rendering varsayılan olabilir; rich text için bu yoldan çıkmak ayrı inceleme gerektirir. React’in raw HTML prop’u gibi escape hatch’ler HTML sink’ini geri getirir. Aynı framework içinde olmak, sink’in interpretation’ını kaldırmaz. Framework URL handling’i de application’ın izin verdiği destination policy’sinin yerine geçmez. Ledger, plain text, raw HTML ve policy’ye uygun rich text için gereken kontrolleri ayırır; gerçek framework render etmez.
WEB-10.S03 · Core · Escaping, sanitization, CSP ve Trusted Types ↗Sanitization formatting contract’ıdırRich text gerçekten p/em/strong structure istiyorsa yalnız entity encode etmek formatting’i text’e çevirir. Sanitization parse edilmiş içeriği seçilmiş tag/attribute/URL policy’ye göre sınırlar; string içinde birkaç kelime silmek HTML grammar’ını çözmez. Atlas’ın benign p/class/em declaration’ında policy p/em/strong’a izin verir, attribute kabul etmez; class="note" style bilgisi kaldırılır ve Tea & Bread text’i korunur. Bu expected tree projection gerçek HTML sanitizer değildir. Approved library/configuration’ın browser parsing davranışı, version’ı ve subsequent mutation’ı ayrı doğrulanmalıdır; sanitized result’a sonradan yeni markup eklemek önceki review’ün kapsamını değiştirir.
WEB-10.S03 · Core · Escaping, sanitization, CSP ve Trusted Types ↗CSP ile Trusted Types ayrı gates’tirCSP script/resource policy’si execution/loading seçeneklerini sınırlar; untrusted HTML’i sanitize etmez veya business permission vermez. Report-only policy monitor eder, enforce sonucu değildir. Trusted Types ise selected injection sink’lerinde beklenen type/policy conversion sınırını uygular. require-trusted-types-for sink enforcement ile trusted-types approved policy-name kontrolü farklı directive’lerdir. TrustedHTML brand, policy’nin içeriği gerçekten güvenli seçtiği anlamını browser adına otomatik hesaplamaz; policy callback security-critical kalır. Seçilmiş profile supporting browser/enforce/no-default-policy/no-author-parser-options varsayar: raw string HTML sink’te reddedilir, approved sanitized alias kabul edilir. Current draft/implementation coverage ve alternate parser-options yolları bu dar profile’dan genellenmez.
WEB-10.S03 · Core · Escaping, sanitization, CSP ve Trusted Types ↗Approved type etiketinden fazla sonuç çıkarmakBir policy name’in allowed olması createHTML callback’in doğru sanitize yaptığını kanıtlamaz. Benzer şekilde TrustedHTML olarak declared result whole-site XSS safety veya server authorization kanıtı değildir. Riskli varsayım browser brand check’inin tüm rich text policy’sini bağımsız denetlediğidir; browser selected sink’e typed value geldiğini kontrol eder, application hangi transformation’ı trusted sayacağını belirler. Artifact bu yüzden input tree, projected tree, policy alias, revision ve sink type’ını ayrı tutar. Burada real TrustedHTML instance üretilmediği açıkça yazılır; type declaration model scope’udur.
WEB-10.S03 · Red · Escaping, sanitization, CSP ve Trusted Types ↗Sonraki mutation eski kontrollere ait değildirSanitized rich text’e başka pipeline’ın raw markup’ını eklemek veya library’nin sonucu yeniden yorumlaması review edilmiş final tree’yi değiştirir. CSP header varlığı bu mutation’ın doğru olduğunu söylemez; normal script-src allow sonucu data semantics’ini onaylamaz. Raw string mismatch branch’ı harmless fixed markup ile çalışır ve yalnız selected enforce/no-default gate’inin reddini gösterir; executable payload veya bypass variant yoktur. Report-only mismatch aynı block sonucu vermez, unsupported browser da aynı enforcement’a sahip kabul edilmez. Evidence policy disposition ve feature support’u belirtmeden "Trusted Types var" demek yeterli değildir.
WEB-10.S03 · Red · Escaping, sanitization, CSP ve Trusted Types ↗Text default, rich text exceptionTree projector yalnız verilen inputTree’yi allowedTags/allowedAttributes ile karşılaştırır; TT ve CSP tabloları da declared type/policy/disposition koşullarını hesaplar. Diagnostic=true, reportDelivered veya actualExecution anlamına gelmez. type-mismatch ile policy-denied farklı yerel karar nedenleridir; bu defter gerçek sanitizer ya da Browser enforcement üreticisi değildir. Plain title için ordinary text API kullanılır; rich text isteyen tek renderer explicit tag/attribute policy’sini own eder. Sanitizer’ı browser grammar’ını anlayan maintained implementation’dan seçmek ve configuration’ı pin etmek gerekir; bu dersin finite tree projector’ı onun yerine kullanılmaz. Allowed p/em/strong örneği formatting’i korurken disallowed benign class’ı kaldırmayı bekler; text-only branch ise markup parser’a hiç gitmez. Regression yalnız expected text’i değil izinli tree/attribute sonucunu da gözlemlemelidir. Storage’daki source value ile approved render result revision’ı ayrı tutulur.
WEB-10.S03 · Blue · Escaping, sanitization, CSP ve Trusted Types ↗Type gate ve CSP evidence birlikte kaydedilirPolicy creation permission, sanitizer result, correct sink type ve enforcement disposition birbirinden ayrı check’lerdir. Seçili ledger atlas-rich-text policy’sine izin verir, review revision 1’i require eder ve supported enforce/no-default innerHTML profile’ında plain string’i reddeder. Ordinary h2.textContent bu HTML type gate’ine ihtiyaç duymaz; original text ile data olarak kalır. CSP’nin report-only ve enforce davranışı örneğin boolean tablosunda ayrı gösterilir, report delivered diye bir sonuç uydurulmaz. Native encoding/plain-data projector sonucu; pure model sonucu; actual sanitizer/TT/browser sonucu ayrı kanıt düzeyleridir. Yeni bir browser gözlemi için desteklenen feature, uygulanan policy ve sink sonucu birlikte kaydedilmelidir; bu defter o gözlemin yerine geçmez.
WEB-10.S03 · Blue · Escaping, sanitization, CSP ve Trusted Types ↗formatPolicyFixed benign declaration’ın izinli formatting tree projection’ı; HTML sanitizer değil.
WEB-10.S03 · Escaping, sanitization, CSP ve Trusted Types ↗trustedTypes.rowsSelected enforce/no-default profile için declared type/policy gate.
WEB-10.S03 · Escaping, sanitization, CSP ve Trusted Types ↗csp.rowsOwn self-source matrix; script fetch/execution veya report delivery yok.
WEB-10.S03 · Escaping, sanitization, CSP ve Trusted Types ↗profileActual sanitizer/TT/browser/framework evidence olmadığını ayrı belirtir.
WEB-10.S03 · Escaping, sanitization, CSP ve Trusted Types ↗Service Worker, cache ve client ayrı state taşırAtlas’ın public book title’ı Tea & Bread offline okunabilsin. Worker DOM’a erişen page script değildir; controlled client’ın fetch event’ine kendi worker context’inde katılır ve response seçebilir. Secure-context/same-origin registration ve script directory’sine bağlı maximum scope kontrolü vardır; Service-Worker-Allowed bu path sınırını değiştirebilir. Path, farklı kullanıcıları güvenli biçimde ayıran origin boundary yerine geçmez. Registration success, installed/waiting/active state ve bir document’ın controlled olması aynı gözlem değildir. İlk aktivasyondan önce açık sayfa default olarak reload gerektirebilir; clients.claim ve skipWaiting kullanımı ayrıca lifecycle seçimidir.
WEB-10.S04 · Core · Service worker cache, object trust ve DOM clobbering ↗Cache hit bir freshness veya permission kararı değildirCache API, Request/Response çiftlerini application’ın yönettiği named cache’lerde tutar. HTTP cache’ten farklıdır: Cache-Control freshness veya no-store bu store’un lifecycle’ını tek başına yönetmez. Application cache admission, version, update, deletion ve fallback policy’sini seçmelidir; browser quota veya eviction nedeniyle içerik kaybolabilir. Atlas-v2 yalnız public JSON book-A’yı exact URL ve schemaVersion=2 ile kabul eder. Bu application kontrolü, Cache.match algoritmasının yerine geçmez; Vary ve matching options ayrıca önemlidir. Body’nin parse edilebilmesi, güncel server permission veya revocation sonucu değildir. Private ya da session-bound data bu public offline policy’ye karışırsa account switch ve logout sonrasında disclosure riski doğar.
WEB-10.S04 · Core · Service worker cache, object trust ve DOM clobbering ↗Own property ile named DOM lookup aynı mekanizma değildirJSON book object için own id/title/schemaVersion ve expected types açıkça kontrol edilir. Prototype chain’den gelen bir displayMode property’sinin okunabilmesi onun input’un kendi field’ı olduğunu göstermez; Object.hasOwn bu iki durumu ayırır. Prototype pollution, shared/inherited object state’in unsafe write veya merge ile değişip başka consumer’a ulaşması sınırıdır; yalnız JSON parse etmek böyle bir değişiklik yaptı diye sunulmaz. DOM clobbering ise HTML id/name’in legacy Window/form named access ile application lookup’una karışmasıdır, prototype mutation değildir. Fixed atlasBookForm ve bookTitle control’u named lookup’ta element verir, title string’i değil. Local module configuration, explicit element lookup ve expected element/value type kontrolü bu namespace’leri ayırır; Object.freeze trusted own object’te shallow’dur ve window/document için genel çözüm değildir.
WEB-10.S04 · Core · Service worker cache, object trust ve DOM clobbering ↗Persisted response’u güncel authority sanmakNormal cache hit network’e gitmeden body verebilir; bunun prerequisite’i selected worker/client ve eligible stored entry’dir. Bozulan varsayım server’ın bu görüntüleme sırasında yeniden authz veya freshness değerlendirdiğidir. Etki content revision’ın eski kalması veya yanlış cache admission kullanılmışsa private body’nin yanlış user context’inde görünmesidir; her stale public title security compromise değildir. Worker v2 geldi diye old cache entry’nin silindiği veya old client’ın v2 ile çalıştığı varsayılmaz. Kontrol public/private endpoint sınıflandırmasını, content version’ı, cache key/context’i ve account lifecycle’ını explicit tutmaktır. Artifact offline/shape-denied branch’ında local fallback seçer; server hiç request görmediği için denial server permission check diye etiketlenmez.
WEB-10.S04 · Red · Service worker cache, object trust ve DOM clobbering ↗Readable property expected data olmayabilirTrust error object.title veya window-level name’i yalnız truthy diye kabul etmek olabilir. Prototype path ve DOM named property farklı prerequisite’lere sahiptir: ilki unsafe object state propagation, ikincisi relevant HTML namespace ve o namespace’i consumer’ın kullanmasıdır. Etki field/type confusion’dan kullanılan sink’e göre değişir; her named form veya inherited benign option exploit değildir. Fixed book form normal ve harmless’tır; ders yalnız reference ile title string arasındaki tip sınırını gösterir. Kontrol closed own-field schema, explicit local configuration ve markup namespace policy’dir. Freeze nested object’i immutable yapmaz; sanitizer’ın XSS için seçilmiş olması bütün named-property risklerini kaldırdığı anlamına gelmez. Bu yüzden output interpretation ile object ownership iki ayrı review sorusudur.
WEB-10.S04 · Red · Service worker cache, object trust ve DOM clobbering ↗Cache decision için doğru observation pointBu artifact cache seçim fonksiyonunun verilen row koşullarını ve object/lookup defterini taşır. Network dalında origin receipt model içinde gösterilir; normal ve shape-denied dalları origin’e gitmez. named-dom ise aynı cache row’unu yeniden çalıştıran bir read değildir: yalnız element reference ile value string ayrımını inceler. Controller/version ve expected lookup bilgileri gerçek Browser ölçümü değildir. Client controller identity, worker/cache version, request URL, response source ve offline fallback reason birlikte gözlemlenir. Origin access log’unda request olmaması client hiç content görmedi demek değildir; cache hit origin’e ulaşmaz. Cache admission kaydı selected public classification/schema revision’ını taşır, secret veya private body loglanmaz. Response clone ve event.waitUntil storage work’ünü destekler; clone başarıyla oluşturuldu diye eventual cache write başarılı veya durable sayılmaz. Update regression old controlled client, waiting worker, cache eviction/miss ve app-version mismatch’i ayrı test eder. Browser storage temizliği yalnız bir cache adı silindi diye tamamlanmış varsayılmaz; logout/account switch için private offline state varsa onun lifecycle’ı da açık tasarlanır.
WEB-10.S04 · Blue · Service worker cache, object trust ve DOM clobbering ↗Field ownership ve DOM namespace’ini sınırlaBook consumer accepted keys/types listesiyle own fields’i doğrular; Map veya null-prototype dictionary dynamic data alanları için inherited lookup’u azaltabilir, fakat business authorization sağlamaz. Object.hasOwn null veya undefined value için true dönebildiğinden presence kontrolünü value/type kontrolünden ayır. Trusted config yalnız local reference’tan okunur, global named DOM value’dan oluşturulmaz. Fixed form/control lookup beklenen interface ve .value string’ini ayrı taşır; duplicate name varsa collection/past-name davranışını tek string’e eşitleme. Regression normal own object, missing own field, inherited benign option ve named element reference için farklı sonuç ister. Pure fixture/Node property sonucu gerçek DOM named lookup veya Service Worker Cache API execution yerine geçirilmez.
WEB-10.S04 · Blue · Service worker cache, object trust ve DOM clobbering ↗profileSelected controlled worker ve public-only declaration.
WEB-10.S04 · Service worker cache, object trust ve DOM clobbering ↗entryRequest key, app expiration ve HTTP header farklı alanlardır.
WEB-10.S04 · Service worker cache, object trust ve DOM clobbering ↗rowsCache, network veya local fallback seçimi.
WEB-10.S04 · Service worker cache, object trust ve DOM clobbering ↗objectLedgerOwn/inherited field ve shallow freeze beklentileri.
WEB-10.S04 · Service worker cache, object trust ve DOM clobbering ↗namedDOMFixed benign form/control lookup tipleri; browser execution değildir.
WEB-10.S04 · Service worker cache, object trust ve DOM clobbering ↗Browser hangi yetkiyi ayırır?Browser yalnız uzak server’a HTTP gönderen bir araç değildir. Birkaç uygulamanın script, document, storage ve credential bağlamını aynı kullanıcı oturumunda çalıştırır; bir uygulamanın başka uygulamanın verisini doğrudan okuyabilmesini sınırlaması gerekir. Origin bu client-side yetki sınırının temel kimliğidir. Atlas document’i ile bir preview document’i arasındaki DOM read kararı browser tarafındadır; Notes API’deki kullanıcı/tenant kararı ise server tarafında kalır. Aynı kişi iki sayfayı açtı diye document’ler aynı authority’yi kazanmaz.
WEB-11.01 · Core · Origin ve Same-Origin Policy ↗Her origin bir URL string’i değildirOpaque origin, string’den yeniden üretilemeyen internal identity taşır. Ayrı opaque-A ve opaque-B ikisi de null serialize edilir, fakat aynı origin değildir; opaque-A kendisiyle karşılaştırıldığında aynıdır. Bu nedenle log’da veya event.origin’da görülen null, ortak bir güvenilir origin adı sayılmaz. Sandboxed origin flag, URL’si Atlas’a benzeyen document’i opaque yapabilir. URL.origin görünümünden bütün document origin koşullarını çıkarmak doğru değildir; document oluşturma ve sandbox bağlamı da önemlidir.
WEB-11.01 · Core · Origin ve Same-Origin Policy ↗Read, send ve embed ayrı kararlarSOP cross-origin DOM ve storage okumalarını sınırlar; bütün cross-origin network’ü durduran firewall değildir. Link/navigation, bazı normal request’ler ve embedding kendi kurallarıyla gerçekleşebilir. Bir görselin iframe yanında görünmesi onun document’inin DOM’unu açmaz; image/canvas okunabilirliği de ayrı koşullar taşır. CORS-mode fetch’te request server’a ulaşmışken response script’e açılmayabilir. no-cors opaque response da script’in normal body okumasını sağlamaz. “Gönderildi” ile “okunabildi” arasında bu yüzden ayrı kanıt gerekir.
WEB-11.01 · Core · Origin ve Same-Origin Policy ↗Yanlış eşitlik hangi veriyi açar?Atlas ile preview.example.org aynı işletmeye ait olabilir; browser’a göre host farklıdır. Domain suffix’i benziyor diye DOM sample’ı açan application helper, kendi trust kararını browser origin modelinden daha geniş kurmuştur. Gerekli koşul, başka origin’in verisinin read permission olmadan application’a taşınmasıdır; aynı ekran veya aynı DNS IP bu koşulu meşrulaştırmaz. Etki hangi document veya storage verisinin geçtiğine bağlıdır. Bu ders böyle bir davranışı üretmez; policy tablosundaki yanlış eşitlik varsayımını tartışır.
WEB-11.01 · Red · Origin ve Same-Origin Policy ↗Request receipt neyi kanıtlar?Bir normal cross-origin GET’in server’a ulaşması, SOP’un bozuk olduğunu kanıtlamaz. Server response gönderdiği halde script body’ye erişemeyebilir; embed görünürken direct DOM read deny olabilir. Kontrol etkisini doğru adlandırmak için sent, embedded, script-readable ve server-authorized alanlarını ayrı tutarız. Read isolation’ı request authorization sanan tasarım, browser’ın korumadığı server-side gate’i atlar. CSRF veya access control için SOP’un varlığı tek başına olumlu kanıt değildir.
WEB-11.01 · Red · Origin ve Same-Origin Policy ↗Boundary’yi document ve operation ile kaydetOrigin matrix’i yerel URL/identity defteridir. HTTP tuple, document creation bağlamı ve read operation ayrı girdilerdir; opaque alias gerçek Browser handle’ı değildir. Gerçek incelemede server receipt’i send’i, browser-local gate ise script read’i yanıtlar; bu tabloda ikisi yalnız declared sonuçtur ve loaded preview state’i yeni request üretmez. Atlas’ın origin tablosu ordinary HTTP URL’lerini normalized scheme/host/port ile saklar; opaque context’ler ayrı identity alias’ları taşır. Same-site bilgisini cookie policy bağlamında kullanabiliriz, fakat DOM read gate’ine geçirmeyiz. Path değişiminin origin’i değiştirmediğini, default port’un normalize edildiğini ve explicit nondefault port’un fark yarattığını kontrol ederiz. Legacy document.domain setter yerine ihtiyaç duyulan cross-document iş için dar bir messaging sözleşmesi tasarlamak, uygulamaların güven sınırlarını görünür bırakır.
WEB-11.01 · Blue · Origin ve Same-Origin Policy ↗Network ve exposure kanıtıNetwork davranışını araştırırken request receipt ve script exposure kanıtını farklı yerlerden al: server normal request’i görür, browser response gate’ini uygular. Cookie kapsamı ve storage origin ilişkileri de tek tabloya zorlanmaz; cookie domain/path/site kuralları DOM origin tuple’ından farklıdır. Bu ayrımlar local fixture’da source/path ve predicate kontrolüdür. Browser process isolation, gerçek storage, canvas, credential gönderimi veya embedding policy uygulanmış sayılmaz; hepsi kendi API ve profile testi ister.
WEB-11.01 · Blue · Origin ve Same-Origin Policy ↗httpOriginsHTTP URL parsing örnekleri; Document origin kurallarının tümü değildir.
WEB-11.01 · Origin ve Same-Origin Policy ↗identitiesNormalized tuple veya opaque internal identity alias’ı.
WEB-11.01 · Origin ve Same-Origin Policy ↗comparisonsSerialized null eşitliğinden bağımsız identity sonucu.
WEB-11.01 · Origin ve Same-Origin Policy ↗operationsSend/embed/read/server policy ayrı kategorilerdir.
WEB-11.01 · Origin ve Same-Origin Policy ↗documentContextsCreation ve sandbox bağlamı URL string’inden fazladır.
WEB-11.01 · Origin ve Same-Origin Policy ↗Server response’u hangi script’e açar?CORS, server’ın HTTP response üzerinden browser’a belirli origin’deki script için sharing izni bildirdiği mekanizmadır. API’de hangi kullanıcının hangi işlemi yapabildiğini belirleyen authorization sistemi değildir. Atlas https://atlas.example.org origin’inden https://catalog.example.org/list için normal fetch ister. Browser cors mode’da response’u script’e açmadan CORS check uygular. Access-Control-Allow-Origin tek serialized origin veya uygun credentials mode’da wildcard olabilir; comma-separated origin listesi birden fazla origin’i böyle yetkilendirmez. CORS check geçse de body okuma ve JSON parse ayrı aşamalardır.
WEB-11.02 · Core · CORS, preflight ve credentials ↗Preflight sadece method’a bakmazCORS-safelisted methods GET, HEAD ve POST’tur; fakat GET kullanmak tek başına preflight’i kaldırmaz. Author-controlled request header adları ve değerleri de safelist koşullarını sağlamalıdır. X-Atlas-View adı safelisted değildir. Content-Type’ın MIME essence’i yalnız application/x-www-form-urlencoded, multipart/form-data veya text/plain olduğunda ve value koşulları sağlandığında safelisted olabilir; JSON buna girmez. Accept için unsafe-byte ve 128-byte sınırı, dil header’ları için karakter koşulları ve Range için single-byte-range sınırı vardır. Streaming upload veya explicit preflight flag gibi ek koşullar da profile’e göre önemlidir.
WEB-11.02 · Core · CORS, preflight ve credentials ↗include bir Cookie gönderme emri değildirFetch credentials default’u same-origin’dir; cross-origin’de include uygun credentials kullanımına izin veren mode’dur. Cookie’nin varlığı, Domain/Path/Secure, SameSite ve browser privacy policy ayrıca gönderimi etkiler. include seçmek olmayan veya policy’nin engellediği cookie’yi yaratmaz. Final CORS check include mode’a göre exact ACAO ve case-sensitive true ACAC ister; network’te gerçekten Cookie bulunmamış olsa da wildcard ACAO bu mode’da kabul edilmez. omit ile wildcard seçili public response için geçebilir.
WEB-11.02 · Core · CORS, preflight ve credentials ↗Hangi deny request’i durdurur?Preflight-denied branch’inde normal OPTIONS server’a ulaşır; X-Atlas-View izni eksik olduğundan browser actual GET’i göndermez. Final-blocked branch’inde ön kontrol geçer ve readonly GET server’a ulaşır; final response yanlış wildcard ile include mode’a sunulduğundan script exposure deny olur. İki deny aynı ağ sonucu değildir. Son CORS hatası server’ın GET receipt’ini geri almaz; bu örnekte mutation yoktur fakat server-side işlem izinlerinin CORS dışında korunması gerektiğini gösterir.
WEB-11.02 · Red · CORS, preflight ve credentials ↗Sharing genişlerse etki nedir?Origin allowlist’in gevşemesi script-readable veri sınırını genişletebilir; bu etki, response’un hassasiyeti ve credential bağlamıyla değerlendirilir. CORS success session sahibinin her object’i okuyabildiğini kanıtlamaz; CORS failure da CSRF protection kanıtı değildir. Credential gönderimi ve script exposure’ı aynı boolean’da birleştirmek özellikle misleading olur. Bu ders yalnız owned synthetic endpoint’lerin normal readonly fixtures’ını kullanır; header manipulation, üçüncü hedef veya bypass akışı göstermez.
WEB-11.02 · Red · CORS, preflight ve credentials ↗Sharing policy ile API policy’yi ayrı işletSahnedeki Catalog API preflight/final response koşullarını, Atlas browser ise bu yanıtın alınması sonrası exposure kararını sahiplenir. cases/headerCases/exposureCases authored policy kayıtlarıdır; gerçek access log’u değildir. preflight-denied yalnız OPTIONS’a ulaşır, final-blocked GET’e de ulaşır. omitted body/JSON/DOM aşamaları script exposure’dan türetilemez. Atlas entegrasyonu permitted serialized origin’i configuration’dan seçer; include profilinde ACAO exact ve ACAC true olur. OPTIONS route’u browser’ın credential taşımayan ön kontrolünü karşılar; actual resource route kullanıcı/session ve object kurallarını bağımsız uygular. Public catalog örneğinde seçili policy public-read’dir ve state-changing action yoktur. Bir error response da uygun CORS header’larıyla script’e açılabilir; HTTP status başarılı business sonucu ile aynı değildir. Preflight ise ok-status ister.
WEB-11.02 · Blue · CORS, preflight ve credentials ↗İki farklı cache policyCache incelemesinde iki policy’yi kaydet: HTTP response’ın Origin’e göre variation’ı ve browser preflight cache’inin origin/URL/credentials/method/header scope’u. Max-Age browser limitleriyle kısıtlanabilir; bu fixture gerçek cache timer çalıştırmaz. Response header’larını script’te görmek için expose policy gerekir; browser devtools’ta görünmeleri script API’de erişilebilir olduklarını ispatlamaz. Actual network, browser privacy setting, streaming upload ve endpoint authorization için ayrı izole integration evidence tutulmalıdır.
WEB-11.02 · Blue · CORS, preflight ve credentials ↗headerCasesMethod ile header name/value birlikte; dar ASCII örnekleri.
WEB-11.02 · CORS, preflight ve credentials ↗preflightCredential-free OPTIONS; original include izni response’da ayrıca gerekir.
WEB-11.02 · CORS, preflight ve credentials ↗casesActual GET send ve final script exposure ayrı sonuçlardır.
WEB-11.02 · CORS, preflight ve credentials ↗exposureCasesExact origin ve byte-case-sensitive true kontrolü.
WEB-11.02 · CORS, preflight ve credentials ↗cookieEligibilityMode ile cookie policy farklıdır; gerçek cookie gönderilmez.
WEB-11.02 · CORS, preflight ve credentials ↗cacheProfileSelected dynamic HTTP variation, separate preflight cache.
WEB-11.02 · CORS, preflight ve credentials ↗iframe görmek document’ini okumak değildirAtlas parent’ı, preview.example.org document’ini iframe içinde gösterir. Normal cross-origin durumda parent contentWindow üzerinden bir WindowProxy reference elde edebilir; bu reference preview DOM’una genel erişim vermez. postMessage gibi sınırlı yüzeyler kullanılabilirken direct document okuması origin gate’ine bağlıdır. Aynı-origin iframe daha fazla script erişimi paylaşır; iframe etiketi tek başına her içeriği güçlü izolasyona sokmaz. Browser process seçimi de bu DOM boundary’nin görsel kutusuyla eş anlamlı değildir.
WEB-11.03 · Core · iframe isolation ve postMessage ↗Mesaj sözleşmesi transport değildirParent yalnız get-title v1 request’i gönderir: transactionAlias=tx-current ve bookAlias=atlas-notlari. postMessage data’yı structured serialization ile diğer context’e taşır ve task queue üzerinden message event oluşturur; HTTP packet veya doğrudan DOM paylaşımı değildir. Seçili exact targetOrigin=https://preview.example.org, task çalışırken receiver document origin’iyle eşleşmelidir. WindowProxy navigation sonrası başka document’i temsil edebilir. Gönderme çağrısının dönmesi, message event’in oluştuğu veya receiver’ın request’i kabul ettiği anlamına gelmez.
WEB-11.03 · Core · iframe isolation ve postMessage ↗Origin tek başına hangi reply’yi seçer?Atlas iki preview instance’ını aynı origin’den açmış olabilir. Instance-mismatch branch’inde reply origin’i doğrudur fakat source alias preview-two, pending request’in beklediği preview-one değildir. Parent onu kabul etmez. Bu normal widget wiring hatasıdır; başka hedefe müdahale veya payload değildir. Expected origin’in doğru olması hangi window ve hangi transaction’ın sonuç verdiğini tek başına belirlemez. Yanlış kabul edilirse etki bu readonly örnekte yanlış kitap başlığının gösterilmesidir; daha güçlü message action’ları kendi authorization sınırını ister.
WEB-11.03 · Red · iframe isolation ve postMessage ↗Opaque identity ve message şekliSerialized null’un bütün opaque sender’ları aynı trusted widget yaptığı düşüncesi burada da yanlış olur. Schema’daki type/v/transaction/book alanları mesajın izin verilen readonly işini daraltır; data’yı HTML veya executable text gibi ele almak bu sözleşmenin dışındadır. Bu ders no-eval ve text-only result profili seçer, gerçek renderer çalıştırmaz. Kontrol etkisi, event acceptance ve selected display binding arasında tutulur; origin check’in API kullanıcı/tenant yetkisi verdiği iddia edilmez.
WEB-11.03 · Red · iframe isolation ve postMessage ↗Dar, instance’a bağlı mesaj kabulüBu artifact Window message teslim koşullarını ve receiver kabul kararlarını ayrı defterlerde tutar. deliveryCases browser-local task’in event üretip üretmediğini, replyCases parent’ın origin/source/type/transaction karşılaştırmasını öngörür. Bunlar gerçek postMessage veya HTTP kayıtları değildir; event receipt kabul ve display binding’den önce gelir. frame-navigation’da preview event oluşmaz; stale-reply ve instance-mismatch ise parent event’ine ulaşır, sonra reddedilir. Atlas expected origin’i configuration’dan, expected WindowProxy’yi açtığı selected iframe instance’ından alır. Sender exact targetOrigin kullanır; receiver origin, source ve schema’yı birlikte doğrular. Message source identity’si bir origin string’ine çevrilmez; aynı origin’deki iki window birbirinden ayrıdır. Type yalnız get-title/title-result, version yalnız 1, transaction yalnız pending tx-current, book yalnız selected readonly alias olur. Bilinmeyen type veya ek field sessizce güçlü action’a dönüşmez; selected schema’da reject edilir.
WEB-11.03 · Blue · iframe isolation ve postMessage ↗Readiness ve lifecycle sınırıRecipient readiness ve lifecycle de contract’ın parçasıdır. Listener hazırlanmış olmalı; iframe navigation document bağlamını değiştirirse pending işlemler ilgili instance için iptal edilmeli veya yeniden başlatılmalıdır. Model başlangıçta documents/listeners-ready varsayar. Bu varsayım gerçek browser timeout, WindowProxy navigation veya port transfer sonucu değildir; production lifecycle için bu olayların aynı instance ile ilişkilendirilmesi gerekir.
WEB-11.03 · Blue · iframe isolation ve postMessage ↗iframeWindowProxy reference DOM izni değildir; sandbox ayrı sınırlardır.
WEB-11.03 · iframe isolation ve postMessage ↗requestExact readonly message schema ve pending transaction.
WEB-11.03 · iframe isolation ve postMessage ↗deliveryCasesTask anında receiver origin’e bağlı delivery gate.
WEB-11.03 · iframe isolation ve postMessage ↗replyCasesReceiver origin/source/schema/transaction conjunction.
WEB-11.03 · iframe isolation ve postMessage ↗deliverySemanticsAPI call dönüşü, event receipt ve acceptance ayrı.
WEB-11.03 · iframe isolation ve postMessage ↗Hangi işlem hangi policy’ye bakar?Atlas Notları document’i kendi script kaynaklarını ve normal bağlantı hedeflerini sınırlar. script-src çalıştırılabilecek script kaynaklarıyla, connect-src script arayüzlerinin bağlantı hedefleriyle ilgilenir. Bir source list’te görünmek API account veya tenant izni vermez. Browser’ın bir URL’ye bağlantı kurmasına izin vermesi ile server’ın o user için notu okumaya izin vermesi iki ayrı karardır; aynı normal request ikisinden de geçmelidir.
WEB-11.04 · Core · CSP, sandbox ve secure context ↗Sandbox bir origin eşitliği değildiriframe sandbox, document’in script, form, navigation ve origin davranışını flag’lerle kısıtlar. Boş token set’i bu örnekte script ve form submission’ını engeller, origin’i opaque yapar. allow-scripts yalnız script kısıtını kaldırır; normal origin’i geri getirmez. allow-same-origin ise ayrı origin flag’ini kaldırır, cross-origin bir document’i parent ile same-origin yapmaz. URL’nin değişmemesi, efektif origin ve yeteneklerin değişmediği anlamına gelmez.
WEB-11.04 · Core · CSP, sandbox ve secure context ↗Secure context hangi çevreyi anlatır?Secure context güçlü browser özelliklerinin sunulması için bir environment koşuludur. HTTPS ordinary top-level document için temel örnektir; HTTP loopback 127.0.0.0/8 ve ::1 de potentially trustworthy kabul edilir. localhost adları için güvenilir local resolution şartı vardır; file ve vendor scheme davranışını tek bir evrensel URL kuralına sıkıştırma. Güncel HTML, environment’ın top-level creation URL bağlamını, worker’da owner’ı kullanır. HTTP public parent içindeki HTTPS iframe yalnız kendi adresine bakılarak secure sayılamaz.
WEB-11.04 · Core · CSP, sandbox ve secure context ↗İhlal görünmesi ile request’in durmasıNormal ve connect-denied branch’leri aynı readonly endpoint’i kullanır; değişen enforce connect-src listesidir. Denied branch’inde browser local kontrolünde durur, server’a GET arrival gösterilmez. Report-only branch’inde aynı list violation üretir fakat request devam eder. Buradaki diagnostic yalnız inert local state’tir; gerçek reporting endpoint’e gönderildiği iddia edilmez. Bir report kaydı tek başına request’in durduğunu kanıtlamaz; disposition ve uygulanmış policy birlikte okunmalıdır.
WEB-11.04 · Red · CSP, sandbox ve secure context ↗Yanlış boundary etkisini doğru adlandırPreview’ın URL’si HTTPS diye bütün ancestor riskini veya sandbox kısıtını yok saymak, capability açıklamasını yanlış yapar. Scripts allowed satırı forms allowed satırı değildir; opaque origin’in null gösterimi de trusted preview identity’si değildir. Kısıtların gereğinden fazla kaldırılması browser’daki işlem yüzeyini genişletebilir, fakat hangi veri veya user eylemi etkilenir sorusu document ve application policy’siyle cevaplanır. Burada bozulmuş varsayımı table üzerinden değerlendiririz; bir script payload veya dış hedef akışı çalıştırmayız.
WEB-11.04 · Red · CSP, sandbox ve secure context ↗Policy’yi işlem envanterine bağlapolicyRows browser’ın connection gate kararını, contextRows ise verilen creation context beklentilerini kaydeder. Header/disposition sahibi, local violation ve endpoint receipt farklı gözlem noktalarıdır. normal ve report-only GET’i endpoint’e taşır; connect-denied ve ayrı context sorusu bu akışta endpoint’e ulaşmaz. report-gap yalnız violation verir: disposition, gönderim ve report teslimi belirsiz kalır. Atlas için code source, connection destination, child URL ve embedding ancestor envanterini ayrı tut. Header’ın hangi response’a ait olduğunu, enforce/report disposition’ını ve sandbox flag set’ini kaydet. Normal preview ve readonly request olumlu kontrollerdir; yanlış source değil, seçili policy’nin beklenen deny davranışı karşılaştırılır. CSP input handling, output encoding ve server authorization’ın yerine kurulmaz. Kaynak olarak kullandığımız CSP3 metni Working Draft’tır; yalnız bu örnekteki yerleşik directive anlamlarını anlatıyoruz.
WEB-11.04 · Blue · CSP, sandbox ve secure context ↗Kanıtın browser ve model sınırıContext tablosu HTTPS, public HTTP ancestor, loopback ve HTTPS içindeki opaque sandbox örneklerini ayırır. Gerçek üründe API feature detection ile isSecureContext birlikte değerlendirilir; permission ve lifecycle hatası başka sebeplerle oluşabilir. Bu fixture’da yalnız verilen context snapshot’ı ve source list kararı hesaplanır; browser’ın CSP parser’ı, sandbox navigation’ı veya permission UI’ı çalışmaz. Server receipt için server kanıtı, policy enforce sonucu için browser kanıtı gerekir; çizimdeki hareket bu bağımsız kanıtları üretmez.
WEB-11.04 · Blue · CSP, sandbox ve secure context ↗directionsDirective’i owning document ve işlem yönüyle eşler.
WEB-11.04 · CSP, sandbox ve secure context ↗policyRowsAynı-origin GET için self/none ve enforce/report kararı.
WEB-11.04 · CSP, sandbox ve secure context ↗sandboxRowsScript, form ve opaque origin flag’leri ayrı sonuçlardır.
WEB-11.04 · CSP, sandbox ve secure context ↗contextRowsCreation context ile origin kind birbirinden bağımsızdır.
WEB-11.04 · CSP, sandbox ve secure context ↗Ambient identity action intent değildirAtlas’ta Duru reading view’ünü list’ten cards’a kaydeder. Session cookie eligible request’e browser tarafından eklenebilir; bu ambient credential kullanıcı adına taşınır, ama request’in Duru’nun amaçladığı UI işleminden doğduğunu tek başına göstermez. Cookie eligibility domain/path, scheme/Secure, SameSite, request credentials mode ve browser storage policy gibi ayrı koşullara bağlıdır; bütün cross-origin request’lerin cookie taşıdığı genellenmez. HttpOnly JavaScript’in cookie okumasını sınırlar, eligible request’te cookie gönderilmesini durdurmaz. CSRF’nin temel sorusu authenticated context içindeki state change için beklenen request provenance’ın ve action intent bağının nasıl kurulduğudur; server authn ve object/action authz bu sorudan ayrı kalır.
WEB-11.S01 · Core · CSRF, ambient credentials ve action intent ↗Token, Origin ve metadata farklı evidence taşırsave-reading-view policy’si, session-bound synchronizer token’ın doğrulanmasını ister. Ledger yalnız token-present ve token-bound boolean’larını gösterir; gerçek secret üretmez. Server token’ın authenticated session ile bağlı olduğunu doğrulamalıdır. Signed double-submit kullanılıyorsa imza kadar session binding de önemlidir; token URL veya log’a konmaz. Origin’in exact scheme/host/port karşılaştırması browser source context’ini anlatır; opaque null veya missing origin same-origin kanıtı değildir. Güvenilen target origin server configuration’dan gelir, rastgele forwarded header’dan değil. Fetch Metadata same-origin/same-site/cross-site/none ilişkisini bildirir; invalid veya unavailable alan için compatibility ve fallback policy açık olmalıdır. Atlas policy’si token ve exact origin ister. Metadata yoksa aynı token+origin yolunu kabul eder, known cross-site state change’i reddeder.
WEB-11.S01 · Core · CSRF, ambient credentials ve action intent ↗SameSite, origin ve business action’ı ayırSameSite schemeful site ilişkisidir; https://notes.example.org ile https://atlas.example.org aynı site içinde farklı origin olabilir. Strict/Lax cookie bu sibling-origin’i otomatik trusted actor yapmaz. Explicit Lax cross-site top-level safe navigation’a izin verebilir, cross-site fetch veya POST için aynı karar verilmez; bazı browser default-Lax grace davranışları explicit Lax ile eşitlenmez. None Secure gerektirir, third-party policy yine etkili olabilir. GET/HEAD gibi safe method’lar application state değişimine bağlanmamalıdır. Provenance gate geçtikten sonra server Duru’nun tenant/object için save-reading-view yetkisini ayrıca değerlendirir; hassas action için açık confirmation/reauthentication transaction bağını güçlendirebilir, fakat bir header gerçek insanın niyetini matematiksel olarak kanıtlamaz.
WEB-11.S01 · Core · CSRF, ambient credentials ve action intent ↗Session var diye state change’i kabul etmekNormal cookie-backed UI request’in credential’ı browser’ın taşıdığı state’tir. Bozulan varsayım credential’ın her zaman trusted UI intent’ini de taşıdığıdır. Gerekli risk koşulları ambient credential’ın eligible olması, ilgili state-changing handler’ın bulunması ve provenance/intent kontrolünün yetersizliğidir; scope authenticated kullanıcının sahip olduğu action’larla sınırlıdır. CORS read denial veya SOP’ın response okumasını engellemesi server’ın hiç request almadığını kanıtlamaz. Buradaki missing-token ve sibling-origin satırları inert policy rejection’dır; CSRF request veya payload çalıştırılmaz. Kontrol server-owned token/session ilişkisi ve kaynağın doğru değerlendirilmesidir; UI checkbox veya action adının request’te bulunması kendiliğinden güven kanıtı sayılmaz.
WEB-11.S01 · Red · CSRF, ambient credentials ve action intent ↗Bir origin veya token kararı fazla yorumlanabilirToken valid ve exact origin trusted olsa bile object başka tenant’a ait olabilir; artifact permission-denied branch’ı bunu ayırır ve reading-view record’unu değiştirmez. Same-site metadata farklı origin’leri kapsar, none değeri de arbitrary trusted business action demek değildir. Missing header için compatibility exception yazmak kontrolü sessizce kaldırmamalıdır; exceptional clients ayrı authenticated channel/policy isteyebilir. Same-origin script’in endpoint/action seçimini untrusted URL data’dan türetmesi intent bağını ayrıca bozabilir; burada arbitrary endpoint/code üretimi yoktur. Benign expired session, old token/back-button form veya proxy header omission saldırı etiketi taşımadan teşhis edilmelidir. Olası etki ilgili state change’dir; bu lesson bütün account veya origin compromise iddiası üretmez.
WEB-11.S01 · Red · CSRF, ambient credentials ve action intent ↗Decision reason’u identity’den ayrı loglarows tablosu server action gate’inin verilen validation ve permission girdilerini taşır; sameSite tablosu ayrı cookie-eligibility tahminidir. Cookie gönderimi burada gözlenmez. Bütün Core dalları request arrival’a ulaşır; token-missing ve sibling-origin provenance’da durur, permission-denied ise provenance sonrası ayrı action kararında reddedilir. Yalnız list görünümü bu üç nedeni ayırmaz; gate reason ve aynı action’a bağlı receipt gerekir. Server decision ledger session-valid, token-present/validated/bound, origin-match, metadata classification/fallback, object ownership ve action permission alanlarını ayrı kaydeder. Token/cookie raw value loglanmaz; comparison sonucu ve rejection reason yeterlidir. Normal baseline own-origin valid token ve owned object’tir; old session veya missing metadata hangi gate’e aitse orada sınıflanır. HTTP status tek başına token failure ile object denial’ı ayırmayabilir; internal reason ve action correlation gözlem noktasını tamamlar. UI success yalnız server accepted state transition sonrası verilir. Inert matrix state before=list/after=cards ya da unchanged bilgisini taşır; browser response’unu modellemek real endpoint action’ın koştuğu anlamına gelmez.
WEB-11.S01 · Blue · CSRF, ambient credentials ve action intent ↗Policy compatibility ve action semantics’i test etFramework’ın maintained CSRF control’unu tercih ederken session rotation, multiple-tab, back navigation ve token lifetime kararını ürün akışına bağla. Atlas regression provenance-valid/action-denied ve same-site/different-origin durumlarını ayrı ister; SameSite tablosu explicit attributes ve assumed credential eligibility ile sınırlıdır. Metadata absent/invalid için source verification+token fallback test edilir; null origin trusted allowlist’e eklenmez. Exact target origin proxy deployment’da trusted configuration’dan gelir ve approved cross-origin business flows generic allowlist’e dönüşmez. GET read endpoint’i mutation yapmaz, action requests explicit method/intent contract taşır. Stronger confirmation hassas işlemlere göre seçilir; bütün requests’e aynı maliyetli challenge konmaz ve CORS ayarı tek CSRF savunması diye sunulmaz.
WEB-11.S01 · Blue · CSRF, ambient credentials ve action intent ↗profileHarmless reading-view action ve before/desired state; token alias secret değildir.
WEB-11.S01 · CSRF, ambient credentials ve action intent ↗rowsSession, provenance ve action permission ayrı sonuç üretir.
WEB-11.S01 · CSRF, ambient credentials ve action intent ↗provenancePolicyExact origin ve session-bound token selected control’udur.
WEB-11.S01 · CSRF, ambient credentials ve action intent ↗fallbackRowsMissing metadata trusted origin varsayımı yaratmaz.
WEB-11.S01 · CSRF, ambient credentials ve action intent ↗sameSiteExplicit attribute/eligibility modelidir; browser cookie testi değildir.
WEB-11.S01 · CSRF, ambient credentials ve action intent ↗CORS neyi expose eder?Atlas browser’ın Atlas API’den Tea & Bread JSON title’ını okuyabilmesi, resource server’ın browser origin’e response exposure izniyle ilgilidir. API session ve object policy’sini ayrıca değerlendirir. Simple GET server’a ulaşıp normal response üretebilir ama CORS kontrolü browser script’inin body okumasını engelleyebilir; bu, server action’ın hiç gerçekleşmediğini göstermez. Credentials mode include için exact ACAO origin ve ACAC true gerekir. ACAO * bu mode’da exposure izni vermez; cookie’nin fiilen gönderilmemiş olması wildcard’ı kabul edilebilir yapmaz. Credentials gönderimi SameSite ve storage policy’ye de bağlıdır. Method, header ve value koşulları preflight’i asıl exchange’in önüne koyabilir. Preflight izni object authorization kararı değildir.
WEB-11.S02 · Core · CORS, framing ve cross-window message validation ↗Framing policy response’un owner’ına aittirBook preview document kendisini kimlerin embed edebileceğini response header’daki CSP frame-ancestors ile sınırlar. Parent’ın frame-src’u hangi child resource’u yükleyebileceğini anlatır; aynı yönlü kontrol değildir. frame-ancestors bütün ancestor chain’i kontrol eder, yalnız immediate parent’ı değil; default-src’dan fallback almaz ve meta delivery’de bu directive uygulanmaz. Enforced frame-ancestors supporting browser’da X-Frame-Options’ı override eder. XFO DENY/SAMEORIGIN legacy compatibility seçeneğidir; current SAMEORIGIN tüm ancestors’ın same-origin olmasını ister, RFC7034 eski implementation farklarını belgeler. Obsolete ALLOW-FROM güncel allowlist çözümü değildir. Framing denial script DOM read veya server permission denial ile eşitlenmez; bu UI embedding sınırıdır.
WEB-11.S02 · Core · CORS, framing ve cross-window message validation ↗Window message dört gate’ten geçerAtlas parent preview-A WindowProxy reference’ını ve read-7 pending transaction’ını tutar. Harmless reply kind=book-title, version=1, requestId=read-7, title=Tea & Bread olarak hazırlanır ve exact parent targetOrigin’e queue edilir. Receiver event.origin’ı expected sender origin ile, event.source’ı retained preview reference ile, data’yı closed expected schema ile ve requestId’yi pending transaction ile karşılaştırır. event.origin send-time origin’dir; WindowProxy aynı reference kalırken document sonradan navigate edebilir. Payload’ın kendi origin/source string alanı browser event identity yerine geçmez. Structured clone copied data’yı taşır, trust veya ordering of independent async replies sağlamaz. Transferred MessagePort capability başka channel contract’ıdır; her port message için Window origin/source yüzeyi varsayılmaz.
WEB-11.S02 · Core · CORS, framing ve cross-window message validation ↗Response read, UI embedding ve business action ayrı risklerdirNormal title read, preview embedding ve reply delivery üç farklı capability ister. Bozulan varsayım tek origin allow kararının hepsini authorize ettiğidir. CORS generic origin reflection veya credentials-mode yanlışlığı script exposure sınırını bozar; bunun etkisi API’nin gerçekten döndürdüğü data ve authenticated object policy ile sınırlıdır. Framing policy eksikliği relevant action UI’ının başka context içinde görünmesine izin verebilir; clickjacking için yanıltılmış kullanıcı etkileşimi ve uygulanabilir UI/action koşulları ayrıca gerekir. CORS header’ı framing policy, frame-ancestors da action-intent/CSRF kontrolü yerine geçmez. Artifact benign GET ve ordinary ancestor matrix kullanır; overlay, exploit form veya üçüncü site isteği üretmez.
WEB-11.S02 · Red · CORS, framing ve cross-window message validation ↗Trusted sender bile stale veya yanlış shape gönderebilirOrigin doğru iken source reference başka preview olabilir; origin/source doğru iken read-6 reply artık read-7 UI isteğine ait değildir. Missing title, extra field veya yanlış version ayrı schema gate’inde reddedilir. Bu failure sonuçları gerçek saldırıdan önce normal multi-window ve async lifecycle’da da görülebilir. Receiver string matching ile domain suffix aramaz ve payload’ın source alias’ını browser identity saymaz. Accepted message ordinary h2 text data olarak tüketilir; message approval HTML/code interpretation izni değildir. Parent’a queue edilen reply’nin handler exception’ı sender’a synchronous success/failure dönmez. Kontrol retained reference, expected message kind/types ve pending operation correlation’dır; exact targetOrigin sender yönünde ayrı privacy boundary tutar.
WEB-11.S02 · Red · CORS, framing ve cross-window message validation ↗Her kontrolü çalıştığı yerde gözlemlecorsRows API response koşulları ile browser exposure beklentisini, framing.rows resource’un ancestor policy’sini, messageRows parent receiver’ın kabul koşullarını tutar. Bunlar verilmiş örnek kayıtlarıdır. Normal/stale-message Window task’i kullanır ve API’ye gitmez; cors-denied GET API’ye ulaşır, frame-denied ise yalnız yerel policy hesabıdır. correlation-gap’te görülen title bu yolların hangisinin çalıştığını kanıtlamaz. CORS kaydı request origin, credentials mode, ACAO/ACAC ve exposure sonucunu ilgili response ile eşleştirir; server read izni ile browser script’ine exposure ayrı alanlardır. Response origin’e göre değişiyorsa ilgili cache için Vary: Origin gerekir, fakat Vary permission kontrolü değildir. Framing incelemesi korunan resource’un response header’ını, enforce/report disposition’ını ve bütün ancestor zincirini toplar; meta veya default-src koruma kanıtı sayılmaz. Message acceptance kaydı origin-match/source-match/schema-valid/transaction-match ve reason alanlarını secret ya da tam message body’yi loglamadan ayırır. Browser diagnostics kendi exposure kararını, server audit kendi action’ını bilir; tek yüzey bütün zinciri kanıtlamaz.
WEB-11.S02 · Blue · CORS, framing ve cross-window message validation ↗Dört matrix’i tek boolean’a indirmeRegression, include credentials mode ile wildcard ACAO için script read’in engellenmesini bekler; omit public wildcard ve açıkça izin verilen origin ayrı olumlu kontrollerdir. Ancestor tablosu izinli zinciri, izinli immediate parent’ın üstündeki farklı origin’den ayırır; enforce CSP ile XFO fallback aynı branch değildir. Window kontrolleri doğru origin/yanlış reference, doğru reference/eski transaction ve yanlış schema koşullarını bağımsız karşılaştırır. Opaque origin veya port transfer içeren ürünler bu tuple-origin Window örneğine sessizce eklenmez. structuredClone ile ordinary data kopyasını kontrol etmek browser event identity, CORS veya framing enforcement’ını ölçmez. Text rendering ve server action gate’leri bu teslim ve kabul kararlarından ayrı korunur.
WEB-11.S02 · Blue · CORS, framing ve cross-window message validation ↗corsRowsBrowser exposure ile server read permission ayrı sonuçlardır.
WEB-11.S02 · CORS, framing ve cross-window message validation ↗framingResponse-owned ancestors/XFO matrix’i selected destek profile’ı kullanır.
WEB-11.S02 · CORS, framing ve cross-window message validation ↗messageSchemaClosed harmless title reply’nin expected fields/types sınırı.
WEB-11.S02 · CORS, framing ve cross-window message validation ↗messageRowsEvent identity aliases, target ve pending transaction ayrı değerlendirilir.
WEB-11.S02 · CORS, framing ve cross-window message validation ↗profileReserved example origins ve no-actual-execution scope.
WEB-11.S02 · CORS, framing ve cross-window message validation ↗Sayfa dilini ikinci request nasıl hatırlar?Duru, Atlas kitaplığının dili için Türkçe ve görünümü için compact seçer. Bir sonraki sayfa aynı tercihleri göstermelidir. HTTP’nin stateless olması uygulamanın hafıza tutamayacağı anlamına gelmez; request’in anlamı bir önceki mesajın hangi bağlantıda geldiğine dayanmaz. Uygulama devamlılığı, sonraki request’e eklenen veri ve application state ile kurar.
WEB-12.01 · Core · Cookie ile HTTP’ye state eklemek ↗Set-Cookie: server’ın önerisi Browser’a gelirApplication Duru’nun seçimini işler ve response’a iki ayrı Set-Cookie field ekler. Birincisi hd_language=tr; Path=/, ikincisi hd_view=compact; Path=/ içerir. Her biri farklı cookie kaydı içindir. İki Set-Cookie field’ını tek comma-separated listeye dönüştürmek doğru genel birleştirme yöntemi değildir.
WEB-12.01 · Core · Cookie ile HTTP’ye state eklemek ↗Cookie: Browser’ın sonraki request için yaptığı seçimDuru kitap listesine geçince Browser uygun kayıtları seçer ve request’e Cookie: hd_language=tr; hd_view=compact ekler. Bu field’daki semicolon iki name/value çiftini ayırır. Set-Cookie’deki Path=/ gibi attributes request Cookie field’ında tekrar listelenmez.
WEB-12.01 · Core · Cookie ile HTTP’ye state eklemek ↗Server bu veriyi yeniden yorumlarApplication ikinci request’te iki tercihi parse eder. Modelin allowed language kümesi tr/en, allowed view kümesi compact/comfortable’dır. Geçerli çiftler response görünümünü etkiler. Cookie yoksa application kendi default’u olan en/comfortable ile devam eder. Her iki sonucun da nedeni aynı endpoint sözleşmesinde tanımlıdır.
WEB-12.01 · Core · Cookie ile HTTP’ye state eklemek ↗Cookie mekanizması ile kullanılan state biçimini ayırBir cookie doğrudan language gibi bir preference tutabilir veya server’daki kayda işaret eden opaque handle taşıyabilir. İkinci biçimde büyük state Cookie header’ın içinde değildir; handle application’a hangi kaydı değerlendireceğini söyler. WEB-13.01 bu ayrımı session örneğinde işler.
WEB-12.01 · Core · Cookie ile HTTP’ye state eklemek ↗State ne zaman kaybolur?Duru cookie’yi temizlerse sonraki request preference çiftlerini taşımayabilir ve default görünüm gelir. Bu durumda Atlas’ın bütün database’i veya başka server state’i silinmiş değildir. Browser’ın tercihi bırakması ile application’ın kendi kayıtlarını değiştirmesi bağımsızdır.
WEB-12.01 · Core · Cookie ile HTTP’ye state eklemek ↗Preference değeri authority’ye dönüşmesinNormal işlev dil ve layout seçmektir. Gerekli kontrol, gelen değerleri bu iki küçük allowed kümeyle sınırlamaktır. “Server bunu daha önce yazdı” varsayımıyla cookie’yi bir yetki belgesine çevirmek client state’e gereğinden fazla authority verir.
WEB-12.01 · Red · Cookie ile HTTP’ye state eklemek ↗Otomatik gönderim uygulama kontrolünü kaldırmazBrowser’ın Cookie header’ını otomatik oluşturması bütün request’in kullanıcı tarafından bilinçli olarak onaylandığını kanıtlamaz. Cookie state’i sonraki işleme context taşır; işlemin niyetini veya güvenliğini kendi başına doğrulamaz.
WEB-12.01 · Red · Cookie ile HTTP’ye state eklemek ↗Gönderilen header ile kabul edilen kaydı ayırNetwork response’unda iki Set-Cookie field’ını, cookie storage’da iki kaydı ve sonraki request’te bir Cookie field içindeki çiftleri karşılaştır. Bunlar tek ekranın üç kopyası değildir. Response arrival ile cookie acceptance arasında policy değerlendirmesi vardır; sonraki request gönderimi de yeni bir seçimdir.
WEB-12.01 · Blue · Cookie ile HTTP’ye state eklemek ↗Credential taşımadan tercih kararını izleFixture’ın observation kaydı requestId, cookiePresent, languageDecision ve viewDecision alanlarından oluşur. Bu alanlar bizim application-owned örnek şemamızdır. Raw Cookie header’ı genel log’a kopyalamak yerine yalnız karar için gereken, sınırlı preference sonucu kullanılır; gelecekte aynı header’da session credential da bulunabilir.
WEB-12.01 · Blue · Cookie ile HTTP’ye state eklemek ↗Kontrolün sonucu görünüm ve kaynakla birlikte açıklanmalıKalıcı tasarımda cookie tüketen endpoint’in allowed preference değerlerini, default davranışını ve Browser privacy ayarlarıyla çalışmasını belgele. Cookie silinince kritik işlevin hangi fallback’e geçtiğini ayrıca doğrula. Bütün cookie’leri aynı policy’ye zorlamak yerine preference ile authenticated handle’ın farklı veri sınıfları olduğunu koru.
WEB-12.01 · Blue · Cookie ile HTTP’ye state eklemek ↗responseFieldsHer cookie için ayrı Set-Cookie field; comma-separated tek field gibi parse edilmez.
WEB-12.01 · Cookie ile HTTP’ye state eklemek ↗jarAfterArrivalArrival ve izinli Browser policy sonrası oluşması beklenen kayıtlar; gerçek storage capture değil.
WEB-12.01 · Cookie ile HTTP’ye state eklemek ↗nextRequestFieldsGönderilen name/value çiftleri; Path attributes burada yer almaz.
WEB-12.01 · Cookie ile HTTP’ye state eklemek ↗applicationPolicy / branchesPreference allowlist ve yokluğunda default; authentication veya kitap permission sonucu değil.
WEB-12.01 · Cookie ile HTTP’ye state eklemek ↗observationXML / localXPathBizim sentetik XML üstünde yerel selection; network veya zaman korelasyonu yapmaz.
WEB-12.01 · Cookie ile HTTP’ye state eklemek ↗Cookie jar’da duruyor; request’te neden yok?Duru’nun Browser’ında Atlas kitaplığı için hd_scope kaydı görünür. Buna rağmen başka bir URL’e giden request onu taşımayabilir. Cookie inclusion tek bir “cookie var mı?” sorusu değildir: scope, süre, kanal, site bağlamı ve Browser policy birlikte değerlendirilir.
WEB-12.02 · Core · Cookie scope, lifetime ve flags ↗Domain verilmezse host-only; verilirse kapsam genişlerCookie library.outreason.example’den Domain olmadan kurulursa host-only olur: aynı host için adaydır, api.library.outreason.example gibi subdomain’e otomatik yayılmaz. Domain=outreason.example ise cookie bu domain ve uygun subdomain’ler için aday olabilir. Server tamamen ilgisiz domain’i veya public suffix’i serbestçe seçemez.
WEB-12.02 · Core · Cookie scope, lifetime ve flags ↗Path eşleşmesi bir string prefix tahmininden fazlasıdırPath=/books olan cookie /books ve /books/42 request’lerinde adaydır; /bookstore için aday değildir. Slash boundary önemlidir. Path verilmezse default path response’un request URL’inden türetilir; her zaman / olduğunu varsayma.
WEB-12.02 · Core · Cookie scope, lifetime ve flags ↗Lifetime: saklama süresi ve Browser session’ıMax-Age cookie ömrünü saniyeyle, Expires bir tarih olarak belirtir; ikisi birlikte olduğunda Max-Age önceliklidir. Artifact’te kaydın Browser clock’u t=100’de başladığı ve Max-Age=1200 olduğu kabul edilir; t=1300’de cookie expired sayılır. Bu explicit model clock gerçek saat capture’ı değildir.
WEB-12.02 · Core · Cookie scope, lifetime ve flags ↗Secure ve HttpOnly iki farklı kontrolSecure cookie için normal web kullanımında HTTPS taşıması gerekir; artifact HTTP case’ini bu yüzden excluded yapar. Localhost istisnaları ve Browser uyumluluğu ayrı değerlendirilir. Secure cookie’nin değerini disk veya script erişimine karşı tek başına koruduğu varsayılmaz.
WEB-12.02 · Core · Cookie scope, lifetime ve flags ↗SameSite: site bağlamını method ve navigation ile okuSame-site değerlendirmesi, scheme ile registrable domain bağlamına dayanır; aynı origin olmakla eşit değildir. Lax cookie aynı-site request’te adaydır. Cross-site request’te ise explicit Lax için top-level navigation ve safe method gibi koşullar önemlidir: normal link navigation GET ile arka plandaki fetch POST aynı sonuç vermez.
WEB-12.02 · Core · Cookie scope, lifetime ve flags ↗Third-party koşulları bir ek policy kapısıdırBaşka bir site içinde embedded olan kitaplık widget’ı SameSite=None; Secure kullansa bile Browser third-party state’i block veya partition edebilir. Uygulama/browser sürümü, kullanıcı ayarı ve kullanım bağlamı gözlenmeden “None her yerde çalışır” denmez. Burada belirli Browser’ın güncel vendor roadmap’ini ders garantisi yapmıyoruz.
WEB-12.02 · Core · Cookie scope, lifetime ve flags ↗Kapsamı büyütürken güven alanını da düşünDomain=outreason.example seçimi Browser’a birden fazla host için aday kayıt verir. Normal işlev ortak tercih taşımak olabilir; kritik varsayım bu host’ların state kullanımının aynı güven düzeyinde olmasıdır. Host-only seçenek yeterliyse scope’u büyütmek gereksiz paylaşım oluşturabilir.
WEB-12.02 · Red · Cookie scope, lifetime ve flags ↗Bir flag’i bütün kontrollerin yerine koymaHttpOnly bir cookie’nin script API’de görünmesini engelleyebilir; state-changing bir action’ın kim tarafından ve hangi context’te onaylandığını söylemez. Secure uygun taşıma seçer; store’da artık kabul edilmemesi gereken handle’a yeniden yetki vermez.
WEB-12.02 · Red · Cookie scope, lifetime ve flags ↗Inclusion kararını koşul koşul gözleCookie storage’daki Domain/host-only, Path, expiry ve flags alanlarını hedef URL ve request context ile yan yana koy. Network’te cookie yoksa önce Browser’ın exclusion reason’ını ve request’in method/navigation türünü incele. Sadece cookie adını veya server status kodunu görmek missing inclusion’ın nedenini açıklamaz.
WEB-12.02 · Blue · Cookie scope, lifetime ve flags ↗Basit selection ve eksik kanıtMatrix XML üstündeki /cookieDecisions/decision[@included="false"] XPath’i yalnız modelin excluded case’lerini seçer. Beklenen benign sonuçlar subdomain host-only, path mismatch, insecure channel ve cross-site POST Lax durumlarını içerir. Seçilen satırları “attack” diye adlandırmak yanlıştır.
WEB-12.02 · Blue · Cookie scope, lifetime ve flags ↗Policy değişimini compatibility ile doğrulaScope daraltma veya SameSite değiştirme kararı login redirect, embedded widget ve subdomain akışlarını etkileyebilir. Önce hangi akışın cross-site, cross-origin veya aynı host olduğunu envantere çıkar. Küçük bir kullanıcı grubunda hem beklenen inclusion hem beklenen exclusion durumlarını gözle.
WEB-12.02 · Blue · Cookie scope, lifetime ve flags ↗hostOnly / domainYalnız setter host’u ile domain-plus-subdomain adaylığı arasındaki fark.
WEB-12.02 · Cookie scope, lifetime ve flags ↗pathSlash boundary ile request path filtresi; security isolation değil.
WEB-12.02 · Cookie scope, lifetime ve flags ↗createdAt_s / maxAge_s / now_sExplicit Browser lifetime hesabı; server session timeout değil.
WEB-12.02 · Cookie scope, lifetime ve flags ↗secure / httpOnlyTaşıma ve script erişimi farklı; HttpOnly inclusion’ı otomatik false yapmaz.
WEB-12.02 · Cookie scope, lifetime ve flags ↗sameSite / topLevelNavigation / methodExplicit Lax inclusion için bağlam; sameSite bu fixture’da verilen input’tur, PSL algoritması çalıştırılmaz.
WEB-12.02 · Cookie scope, lifetime ve flags ↗browserPolicyAllowedSeçilmiş third-party privacy gate; None bunun sonucunu override etmez.
WEB-12.02 · Cookie scope, lifetime ve flags ↗expected / decisionXMLBenign include/exclude sonuçları ve yerel XPath’e verilen inert schema.
WEB-12.02 · Cookie scope, lifetime ve flags ↗Verinin nerede yaşaması gerekiyor?Atlas okuma uygulamasında tema tercihi küçük bir string’dir. Bir kitaba yazılan not ise başlık, metin ve güncelleme zamanı içeren bir record olabilir. Offline kapak, başka bir tür olan HTTP Response’dur. “Browser’da tutacağız” kararı bu farkları çözmez.
WEB-12.03 · Core · Browser storage seçenekleri ↗localStorage: küçük, origin’e ait string statelocalStorage key/value string saklar ve aynı origin’in sekmeleri ortak storage alanını kullanır. Origin scheme, host ve port ile belirlenir; HTTP ve HTTPS sürümleri aynı storage alanı sayılmaz. /books ile /profile gibi path’ler ayrı güvenlik bölmesi değildir.
WEB-12.03 · Core · Browser storage seçenekleri ↗sessionStorage: sekmeye ait, fakat her zaman boş başlamayan statesessionStorage origin’e ve top-level browsing context’e, pratikte sekmeye göre ayrılır. Duru’nun A sekmesindeki form taslağını B sekmesiyle sürekli ortak tutmaz. Reload ve page restore sırasında aynı page session devam edebilir; sayfayı yenilemek storage’ı temizleme komutu değildir.
WEB-12.03 · Core · Browser storage seçenekleri ↗IndexedDB: asynchronous record ve transactionIndexedDB structured record’lar, object store’lar ve index’ler sunar; okuma/yazma asynchronous isteklerle gerçekleşir. Duru’nun offline kitap notları, tema string’inden daha doğal bir IndexedDB adayıdır. Desteklenen değerler structured clone kurallarıyla saklanır; her JavaScript nesnesinin davranışı olduğu gibi taşınmaz. Özellikle custom prototype chain ve property descriptor’lar kopyalanmaz; geri okunan record’un class method veya readonly davranışını korumasını bekleme. Veriyi açık alanlarla sakla, davranışı uygulama kodunda kur.
WEB-12.03 · Core · Browser storage seçenekleri ↗Cache Storage: HTTP cache ile aynı mekanizma değilCache Storage named cache’ler üzerinden Request/Response çiftleri tutar. Uygulama offline kapak Response’unu bir cache’te saklayıp daha sonra seçebilir. Cache API window ve worker context’lerinde kullanılabilir; mutlaka bir service worker’ın içinde olması gerekmez. API secure context gerektirir.
WEB-12.03 · Core · Browser storage seçenekleri ↗Kapasite ve privacy de veri akışının parçasıBrowser storage sınırsız değildir. Yazma quota nedeniyle başarısız olabilir; IndexedDB ve Cache Storage’ın varsayılan best-effort verileri storage pressure altında evict edilebilir. Persistent storage talebi Browser’ın kararına bağlıdır ve kullanıcı silmesini önlemez. Her API ve Browser için tek bir evrensel kapasite sayısı kullanma.
WEB-12.03 · Core · Browser storage seçenekleri ↗Storage adı, güvenlik sınırı değildirDefensive review’da önce veriye hangi script’in erişebildiğini sor. localStorage, sessionStorage ve IndexedDB origin’de çalışan JavaScript için erişilebilir alanlardır; sekmeye ayrılmış olmak sessionStorage’ı secret vault yapmaz. Bir frontend bundle’a koyulan secret de istemciye teslim edilmiştir.
WEB-12.03 · Red · Browser storage seçenekleri ↗Yerel kaydı input olarak değerlendirDuru’nun bir not record’unda tenant veya role alanı bulunması, server’ın o alanı trusted authority kabul etmesi için gerekçe değildir. Yerel veri eski, bozuk veya kullanıcı tarafından değiştirilmiş olabilir. Security review server’ın bu veriyi nasıl doğruladığına odaklanır.
WEB-12.03 · Red · Browser storage seçenekleri ↗Storage kararını state türüne bağlaKüçük ve yeniden üretilebilir tercih için localStorage; sekmeye bağlı geçici taslak için sessionStorage; ilişkili structured offline record’lar için IndexedDB; uygulamanın yönettiği offline Response’lar için Cache Storage düşün. Bunlar zorunlu eşleştirmeler değil, lifetime ve veri modeli üzerinden gerekçelendirilen başlangıçlardır.
WEB-12.03 · Blue · Browser storage seçenekleri ↗Failure branch’i gerçek bir ürün durumu yapQuota veya transaction abort için taslağı memory’de koru ve unsaved uyarısını sürdür. Cache miss’i normal fallback’e yönlendir. Browser storage’ın temizlenmiş olması uygulamanın yeni authenticated session üretmesi için gerekçe değildir.
WEB-12.03 · Blue · Browser storage seçenekleri ↗Secret ve authority’yi azaltFrontend’a server secret verme; session credential taşımasını ayrı threat model ile seç ve platformun session desteğini tercih et. Client storage’da saklanan her iş alanını server’da doğrula. Bir preference key’inin bulunması login kanıtı değildir.
WEB-12.03 · Blue · Browser storage seçenekleri ↗boundaryAPI’nin görünürlük kapsamı; authenticated authorization sınırı değildir.
WEB-12.03 · Browser storage seçenekleri ↗transaction / uiSavedRequest success öncesi/sonrası değil, transaction sonucu üzerinden yerel başarı durumu.
WEB-12.03 · Browser storage seçenekleri ↗automaticCacheApiExpiryCache-Control değerinden named cache expiry çıkarılamaz.
WEB-12.03 · Browser storage seçenekleri ↗selectorİki sentetik XML üzerinde çalışan yerel tutarlılık sorgusu; Browser storage ölçümü değildir.
WEB-12.03 · Browser storage seçenekleri ↗Bir notun birden fazla doğru durumu vardırDuru Atlas’ta kitabına bir not yazıyor. Browser input’unda “yeni not” görünmesi, server’daki record’un da değiştiğini göstermez. İlk kopyanın owner’ı UI; kalıcı business record’un owner’ı uygulamanın trusted server tarafıdır.
WEB-12.04 · Core · Client ve server state sahipliği ↗Snapshot ile authority’yi ayırBrowser server’dan aldığı metni ve version bilgisini saklayabilir. Bu, belirli bir anda gözlenmiş snapshot’tır. Başka bir sekme veya worker notu güncellediğinde Browser’ın eski kopyası kendi kendine authoritative hale gelmez.
WEB-12.04 · Core · Client ve server state sahipliği ↗Normal save: kabul edilen güncellemeyi görünür kılFixture başlangıcında server note-v3 sürümünü, Browser ise aynı sürümün snapshot’ını bilir. Duru’nun yeni metni bu snapshot üzerine kurulmuştur. Request, yeni metin ve strong ETag olan “note-v3” için If-Match precondition taşır.
WEB-12.04 · Core · Client ve server state sahipliği ↗Stale snapshot: son yazan her zaman kazanmasınİkinci branch’te Browser v2 üzerinden yazarken server’ın güncel notu v3’tür. Koşulsuz overwrite Duru’nun başka bir yerde kabul edilmiş değişikliğini silebilir. If-Match, mevcut representation için strong comparison yaparak bu lost update durumunu önlemeye yarar.
WEB-12.04 · Core · Client ve server state sahipliği ↗Response kaybolursa sonuç unknown olabilirServer v4 commit ettikten sonra response Browser’a ulaşmayabilir. Browser hâlâ v3 bildiği için “server kaydetmedi” demesi de, yalnız request gönderdiği için “kaydedildi” demesi de kanıtsızdır. Bu branch’te server state changed, client knowledge unknown’dur.
WEB-12.04 · Core · Client ve server state sahipliği ↗ETag neyi kanıtlar?ETag, representation version’ının opaque validator’ıdır; credential, role veya ownership proof değildir. Bu örnekte note-v3 okunabilir bir instructional alias’tır. Gerçek uygulama validator biçimini kendisi seçer; artan sayıya benzeyen her alan otomatik strong ETag olmaz.
WEB-12.04 · Core · Client ve server state sahipliği ↗Hangi state kararın girdisi oluyor?Defensive incelemede UI’da düğmenin görünmesi ile server’ın eylemi kabul etmesini farklı gözlemler say. Hidden/disabled kontrol yalnız interaction state’tir. Browser’da role=editor görülmesi trusted authorization sonucu değildir.
WEB-12.04 · Red · Client ve server state sahipliği ↗Başarı metni de bir claim’dirBir save flow’u değerlendirirken optimistic UI’nın hangi anda “saved” dediğini izle. Server reddettiğinde veya sonucu bilinmediğinde bu ifade geri alınmıyorsa ürün kullanıcının state bilgisini bozar.
WEB-12.04 · Red · Client ve server state sahipliği ↗Owner ve başarı boundary’sini yazUI input ve local draft için Browser owner; accepted note ve access policy için trusted server owner tanımla. Her state’in data source, version ve freshness bilgisi olsun. Cache veya snapshot kullanıldığında authoritative kaydın yerini açıkça belirt.
WEB-12.04 · Blue · Client ve server state sahipliği ↗Koşulu commit ile birlikte uygulaConcurrent update kabul eden endpoint’te request authorization ve input validation’ı uygula; precondition karşılaştırması ile mutation’ı tutarlı bir commit sınırında yap. Database conditional update veya transaction gibi uygun primitive seçimi server implementasyonuna bağlıdır.
WEB-12.04 · Blue · Client ve server state sahipliği ↗Unknown response’u yeniden gözlemleBağlantı kopmasında server record’u yeniden okuyup bilinen version ve taslakla karşılaştır. Mutation tekrarı gerekiyorsa işlemin idempotency ve concurrency politikasını kullan. Kullanıcıya draft’ın korunduğunu ve server sonucu doğrulanırken neyin pending kaldığını anlat.
WEB-12.04 · Blue · Client ve server state sahipliği ↗browserBase / serverBeforeBrowser snapshot validator’ı ile server’ın current validator’ı; eşitlik yalnız concurrency precondition’ıdır.
WEB-12.04 · Client ve server state sahipliği ↗serverAfter / serverDecisionTrusted server commit sonucu; response’ın ulaşıp ulaşmadığından bağımsızdır.
WEB-12.04 · Client ve server state sahipliği ↗responseObserved / browserKnowledgeBrowser’ın sonucu öğrenip öğrenmediği; gönderim tek başına server save kanıtı değildir.
WEB-12.04 · Client ve server state sahipliği ↗selectorFalse precondition ile commit’i aynı anda iddia eden fixture kaydını seçer.
WEB-12.04 · Client ve server state sahipliğ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.
WEB-13.01 · Core · Session identifier ve browser taşıması ↗Identifier identity’nin kendisi değil, kayda verilen handle’dırArtifact’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.
WEB-13.01 · Core · Session identifier ve browser taşıması ↗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.
WEB-13.01 · Core · Session identifier ve browser taşıması ↗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.
WEB-13.01 · Core · Session identifier ve browser taşıması ↗Browser taşır; script’in identifier’ı okuması gerekmezSentetik 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.
WEB-13.01 · Core · Session identifier ve browser taşıması ↗Request geldiğinde binding yeniden kontrol edilirApplication 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.
WEB-13.01 · Core · Session identifier ve browser taşıması ↗Handle’a authority veren server binding’idirNormal 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.
WEB-13.01 · Red · Session identifier ve browser taşıması ↗Unpredictability ve gizlilik farklı riskleri karşılarIdentifier 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.
WEB-13.01 · Red · Session identifier ve browser taşıması ↗Creation, delivery ve lookup için ayrı evidenceCreation 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.
WEB-13.01 · Blue · Session identifier ve browser taşıması ↗Session value olmadan lookup kararını ilişkilendirAudit 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.
WEB-13.01 · Blue · Session identifier ve browser taşıması ↗Kayda dayalı identity, ayrı resource policyManuel 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”.
WEB-13.01 · Blue · Session identifier ve browser taşıması ↗authenticationPreconditionÖnceden doğrulanmış identity fixture’ı; client username ile authenticated state kurulmaz.
WEB-13.01 · Session identifier ve browser taşıması ↗handleAlias / SYNTHETIC_OPAQUE_HANDLESecrets-free sabit eğitim etiketleri; random üretim veya working credential değil.
WEB-13.01 · Session identifier ve browser taşıması ↗storeRecord.subject / tenantApplication-owned bağlama context’i. Cookie’de serbest identity claim gösterilmez.
WEB-13.01 · Session identifier ve browser taşıması ↗storeRecord.handleRepresentationRaw token’ın DB’de tutulduğu varsayılmaz; lookup/verifier implementation bu çizimin dışında.
WEB-13.01 · Session identifier ve browser taşıması ↗sessionRefAudit correlation ref; credential yerine kabul edilmez.
WEB-13.01 · Session identifier ve browser taşıması ↗creationTrace.seq / browserHasNewHandleServer record creation, response gönderimi ve Browser arrival ayrımı.
WEB-13.01 · Session identifier ve browser taşıması ↗cases.lookup / result / reasonVerilen recognized/missing/unknown kararları; gerçek session enumeration sonucu değil.
WEB-13.01 · Session identifier ve browser taşıması ↗observationXML / localXPathSentetik accepted/subject tutarlılık selection’ı; tam authentication verifier veya çok-host correlation değil.
WEB-13.01 · Session identifier ve browser taşıması ↗Handle aynı, application node farklıWEB-13.01’de Browser’ın opaque handle’ı server-side binding’e bağlandı. Şimdi Duru’nun bir request’i Node A’ya, sonraki request’i Node B’ye ulaşsın. İki node’ın aynı handle metnini görmesi, aynı authenticated record’u gördüklerini kendiliğinden kanıtlamaz.
WEB-13.02 · Core · Session store ve distributed sessions ↗Process memory neyi sağlar, neyi kaybeder?Tek application process’i session object’lerini kendi memory’sinde tutabilir. Bu tasarım basittir, fakat başka bir process aynı alanı otomatik paylaşmaz. Process restart olduğunda yalnız volatile memory’de duran record kalıcı disk kaydı gibi geri gelmez.
WEB-13.02 · Core · Session store ve distributed sessions ↗Shared session store: ortak record, ayrı request kararıNode A ve B ortak bir store üzerinden aynı binding’i çözebilir. Store ayrı bir service olduğunda application↔store mesajı driver/protocol üzerinden gider; Browser↔Application HTTP exchange’iyle aynı bağlantı değildir. Sahne Node B’nin Browser request’ini zaten aldığı noktadan başlar ve remote lookup’ı gösterir.
WEB-13.02 · Core · Session store ve distributed sessions ↗Stale state: eski active kopya, güncel revoke kararını ezmesinFixture’ın başka branch’inde Node A daha önce version 7 active snapshot’ı almıştır. Node B’nin logout akışı shared record’u version 8 revoked durumuna getirmiştir. A’nın eski snapshot’ı bir historical observation’dır; güncel authority değildir.
WEB-13.02 · Core · Session store ve distributed sessions ↗Consistency ile durability’yi ayrı değerlendirShared endpoint kullanmak, bütün reader’ların anında en son state’i gördüğü garantisi değildir. Redis’in temel replication’ı default olarak asynchronous’tur. Replica’dan okuma stratejisi eski state gösterebilir; revocation için kabul edilen consistency boundary’si ayrıca belirlenmelidir.
WEB-13.02 · Core · Session store ve distributed sessions ↗Expiry, eviction, missing ve failure aynı sonuç değildirSession expiry application’ın server-side lifetime kararıdır. Store TTL, artık gerekmeyen record’u temizlemeye yardımcı olabilir; record henüz fiziksel olarak duruyor diye policy deadline geçmiş session kullanılmaz. Expiry enforcement’ı yalnız temizlik zamanına bağlama.
WEB-13.02 · Core · Session store ve distributed sessions ↗Sadece happy path node’ını incelemeDefensive review’da bir session’ın Node A’da tanınmasıyla Node B’de tanınmasını ayrı observation olarak kaydet. Lookup source, observed version ve decision birlikte gerekir. Local cache’in eski active state’i gösterdiği branch, güncel revoke kararının uygulanıp uygulanmadığını anlamaya yarar.
WEB-13.02 · Red · Session store ve distributed sessions ↗Store erişimi de credential sınırıdırSession store yalnız “performans cache’i” olarak etiketlenip geniş erişime açılmamalıdır. Raw random token saklayan bir store’u okuyabilen taraf, hâlâ geçerli credential elde edebilir. High entropy disclosure’ı önlemez.
WEB-13.02 · Red · Session store ve distributed sessions ↗Authoritative state ve read policy’yi belirleHer node için aynı binding kaynağını, revocation visibility beklentisini ve approved read path’i tanımla. Replica veya local cache kullanılıyorsa stale state’in hangi kararlar için kabul edilebildiğini açıkça sınırla; yalnız kısa cache TTL söylemek güçlü consistency garantisi değildir.
WEB-13.02 · Blue · Session store ve distributed sessions ↗Lifetime update’ini atomic policy yapTouch/refresh için expected version, active state ve lifetime koşulunu aynı atomik boundary’de değerlendir. Conflict’te yeniden oku; revoked/missing/expired state’i valid authentication olmadan active’a çevirmeyi reddet. Generic upsert bu policy’nin yerini tutmaz.
WEB-13.02 · Blue · Session store ve distributed sessions ↗Failure’ı güvenli ve anlaşılır gösterRecord missing, policy expired, capacity eviction ve service unavailable observation’larını ayır. Authenticated processing için yeterli trusted state çözülemiyorsa bu fixture fail closed davranır; kullanıcıya hizmet hatasını logout kanıtı diye sunmaz. Retry ve recovery authenticated authority uyduramaz.
WEB-13.02 · Blue · Session store ve distributed sessions ↗lookup / sourceLookup sonucu ve freshness kaynağı; error, missing ve eski snapshot birbirinden ayrıdır.
WEB-13.02 · Session store ve distributed sessions ↗expectedVersion / observedVersionConditional update’in concurrency koşulu; güvenlik credential’ı değildir.
WEB-13.02 · Session store ve distributed sessions ↗recordState / lifetimeValidFiziksel record varlığı active ve lifetime uygunluğu yerine geçmez.
WEB-13.02 · Session store ve distributed sessions ↗sessionAcceptedBu fixture’ın session decision’ı; resource authorization sonucu değildir.
WEB-13.02 · Session store ve distributed sessions ↗selectorAccepted için known+active+lifetime invariant’ını sorgular; gerçek telemetry değildir.
WEB-13.02 · Session store ve distributed sessions ↗Cookie taşıyıcıdır; session kararı server’da yaşarDuru, Atlas kitaplığına login olduktan sonra ikinci sayfayı açar. Bu yeni HTTP request ilk login işleminin hafızasını taşımaz. Browser uygun cookie’yi request’e ekler; application ise aldığı identifier’ı session store’da kontrol eder. Bu örnekte cookie bir opaque handle taşır: kimliğin, authentication durumunun ve sürelerin anlamı server kaydındadır. Cookie değerinin bulunması tek başına geçerli session olduğunu göstermez.
WEB-13.03 · Core · Session lifecycle, login ve logout ↗Login iki tarafta aynı anda gerçekleşmezİlk sahnede Browser sid-a etiketiyle gösterilen anonymous session’a sahiptir. Duru’nun kimliğinin doğrulandığı t=10 anında application sid-b olarak çizilen yeni authenticated session generation’ı oluşturur; eski anonymous identifier authenticated kimliğe yükseltilmez. sid-a ve sid-b eğitim etiketidir, kullanılabilir credential veya üretim identifier formatı değildir.
WEB-13.03 · Core · Session lifecycle, login ve logout ↗Korumalı request: lookup, süre kontrolü, ardından resource policyDuru t=70’te bir kitap kaydını açar. Browser’ın cookie inclusion kuralları uygun identifier’ı application’a taşır. Application store kaydını bulur, generation’ın active olduğunu ve süre sınırlarının geçilmediğini kontrol eder. Bu örnekte check başarılı olunca lastSeen=70 olur. Hangi request’lerin activity sayılacağı uygulama policy’sidir; background polling’in her zaman kullanıcı faaliyeti sayılması gerekmez.
WEB-13.03 · Core · Session lifecycle, login ve logout ↗Üç saat aynı şey değildirÖrneğin policy’si idle=300 saniye ve absolute=1800 saniyedir. Bunlar öğretim için seçilmiş sayılardır, her ürüne önerilen güvenlik ayarı değildir. Login t=10’da yeni session oluşturur; absolute deadline=1810 olur. t=70’teki kabul edilmiş işlemden sonra idle deadline=370 olur. t=370 sınırında now−lastSeen >= 300 olduğu için yeni request reddedilir; o request lastSeen’i ilerletip kendisini kurtaramaz.
WEB-13.03 · Core · Session lifecycle, login ve logout ↗Logout: server invalidation ve cookie temizliğiLogout branch’i t=70’teki geçerli session’dan ayrılır. Duru t=90’da logout seçer. Application current generation’ı revoked yapar; ardından Browser’a aynı cookie name, Path ve varsa Domain scope’u için Max-Age=0 gönderir. Server invalidation, response receipt ve cookie jar temizliği farklı transitions olarak çizilir.
WEB-13.03 · Core · Session lifecycle, login ve logout ↗Cookie flags farklı sınırları korurSynthetic HTTPS örneğinde __Host-hd_session; Path=/; Secure; HttpOnly; SameSite=Lax kullanılır ve Domain verilmez. __Host- kuralını destekleyen Browser bu isim için Secure, host-only scope ve Path=/ koşullarını arar. Prefix bütün Browser sürümleri için otomatik uyumluluk garantisi sayılmaz.
WEB-13.03 · Core · Session lifecycle, login ve logout ↗Self-contained token’a geçince logout sorusu değişirOpaque handle modelinde application her kabul kararını server state’e bağlar. Self-contained token kullanan bir tasarımda verifier signature ve beklenen issuer/audience/time koşullarını kendi başına değerlendiriyorsa, Browser’ın token’ı silmesi o verifier’a yeni bir iptal bilgisi göndermez. Geçerli kriptografi ile güncel kullanım yetkisi farklı sorulardır.
WEB-13.03 · Core · Session lifecycle, login ve logout ↗Authentication öncesi state neden ayrı tutulur?Normal akışta anonymous session kişiselleştirme veya geçici UI state taşıyabilir; authenticated session ise Duru’nun identity’sini korumalı işlemlere bağlar. İkinci state’in authority’si, birinci identifier’ın kim tarafından seçildiği veya daha önce nerede kullanıldığına güvenilerek kurulmaz.
WEB-13.03 · Red · Session lifecycle, login ve logout ↗Cookie’yi korumak ile session’ı geçersizleştirmek ayrı kontrollerdirBir identifier authenticated state’e ulaşmak için yeterli bir bearer handle olarak kullanılıyorsa, gizliliği önemlidir. Uygun HTTPS taşıması ve dar cookie scope’u maruz kalma yüzeyini azaltır. HttpOnly bir script’in değeri okumasını sınırlar; Browser’ın o script kaynaklı uygun işlemlerde identity’yi taşımasını tek başına durdurmaz.
WEB-13.03 · Red · Session lifecycle, login ve logout ↗Süresi bitmiş veya revoked handle neden kabul edilmemeli?Modelde t=370’te cookie görünür olabilir ama session artık idle koşulunu sağlamaz. Kontrolün UI timer’a bırakılması server kararını client’ın görünümüne bağlar. Benzer biçimde logout yalnız jar’ı temizliyorsa server’daki authority devam edebilir. Kalıcı kontrol, protected işlemin kabul noktasında current generation ve server deadline değerlendirmesidir.
WEB-13.03 · Red · Session lifecycle, login ve logout ↗Hangi gözlem hangi state’i kanıtlar?DevTools Network’te Set-Cookie görmek application’ın bir header gönderdiğini gösterir; Browser’ın cookie’yi kabul ettiğini ayrıca cookie storage ve ilgili request inclusion üzerinden değerlendirirsin. Policy, scope veya Browser ayarları kabulü değiştirebilir. Cookie görünümü server store’un active olduğunu; UI kimlik etiketi de son protected kararın başarılı olduğunu tek başına kanıtlamaz.
WEB-13.03 · Blue · Session lifecycle, login ve logout ↗Credential içermeyen lifecycle correlationRotation, expiry ve logout’u ilişkilendirmek için audit correlation ref kullan; raw session value, Set-Cookie value veya credential loglama. Bu fixture’da generationRef=ledger-b bir audit referansıdır, Browser handle’ına dönüştürülemez. requestId=demo-session-3 yalnız aynı check’in application ve karar kaydını eşler.
WEB-13.03 · Blue · Session lifecycle, login ve logout ↗Doğrulama ve kalıcı kontrolManual labda sırayla login öncesi/sonrası jar state’ini, sanitized store görünümünü, explicit demo clock expiry’sini ve logout sonrası protected kararı gözle. Önce sonucu tahmin et, sonra hangi katmanda gözlemlediğini yaz. Store invalidation ile response arrival ayrıysa bu iki adımın arasındaki görünümü de açıklayabilmelisin.
WEB-13.03 · Blue · Session lifecycle, login ve logout ↗SYNTHETIC_AUTH_B / sid-bKullanılabilir secret değil; authenticated handle’ı görsel olarak izlemek için sabit fixture etiketi. Gerçek session generation yöntemi gösterilmez.
WEB-13.03 · Session lifecycle, login ve logout ↗__Host-hd_session, Path=/, Domain yokDestekleyen Browser’da host-only ve root-path prefix koşulları; başka bir resource için yetki kararı değil.
WEB-13.03 · Session lifecycle, login ve logout ↗Secure / HttpOnly / SameSite=LaxSırasıyla taşıma, script erişimi ve site bağlamına göre inclusion; server validity’den bağımsız sınırlar.
WEB-13.03 · Session lifecycle, login ve logout ↗Max-Age=1800 / Max-Age=0Browser saklama/temizleme talimatı; store TTL veya server logout sonucu değil.
WEB-13.03 · Session lifecycle, login ve logout ↗generationRef / previousGenerationRefAudit correlation için bizim şemamızın referansları. Cookie değeri olarak kabul edilmez; her generation ayrıdır.
WEB-13.03 · Session lifecycle, login ve logout ↗clock_s / seqExplicit model clock ve tek branch içindeki event sırası. Gerçek saat, Windows Event ID veya dağıtık global ordering iddiası yok.
WEB-13.03 · Session lifecycle, login ve logout ↗lastSeen_s / absoluteDeadline_sIdle hesabının son accepted activity noktası ve activity’den bağımsız absolute deadline. t=370 rejected request lastSeen’i değiştirmez.
WEB-13.03 · Session lifecycle, login ve logout ↗event / result / reasonApplication-owned sentetik lifecycle kaydı ve karar gerekçesi; gateway access log’una otomatik eşlenmez.
WEB-13.03 · Session lifecycle, login ve logout ↗requestIdTek check/response işlemini ilişkilendirir; authenticated identity veya session secret değildir.
WEB-13.03 · Session lifecycle, login ve logout ↗idleBranch / logoutBranchAynı accepted state’ten ayrılan alternatif senaryolar; tek timeline’da expiry’den sonra logout yapılmış gibi birleştirilmez.
WEB-13.03 · Session lifecycle, login ve logout ↗Identity bir bağlam içindeki subject’tirDuru görünen ad, duru.reader login identifier, subject-duru ise Atlas uygulamasının iç subject referansı olabilir. Bunların görevleri aynı değildir. Görünen ad değişebilir veya başka bir kullanıcıyla aynı olabilir; trusted authorization referansı yalnız görünen metne bağlanmamalıdır.
WEB-14.01 · Core · Identity, credential ve password authentication ↗Credential identifier’dan farklıdırLogin identifier “hangi hesabı iddia ediyorum?” sorusunu çözer. Credential ise bu iddiayı desteklemek için kullanılan password, security token veya başka authenticator bilgisiyle ilgilidir. Duru’nun subject ID’sini bilmek password’ünü bildiğini göstermez.
WEB-14.01 · Core · Identity, credential ve password authentication ↗Authentication ve authorization iki farklı kararAuthentication, sunulan authenticator’ın ilgili identity iddiasını yeterince destekleyip desteklemediğini değerlendirir. Authorization, trusted actor’ın belirli resource üzerinde belirli action’ı mevcut context’te yapıp yapamayacağını belirler.
WEB-14.01 · Core · Identity, credential ve password authentication ↗Password saklama: plaintext değil verifierKayıt anında uygulama password’ü geri okunacak plaintext olarak saklamak yerine password hashing/KDF desteğiyle verifier üretir. Password’e özel, güncel ve maliyeti ayarlanabilir bir algoritma gerekir; sıradan hızlı SHA-256 digest’i password storage için yeterli seçim değildir.
WEB-14.01 · Core · Identity, credential ve password authentication ↗Login: decrypt etmeden doğrulamaLogin request’i identifier ve password input’unu güçlü transport korumasıyla application’a ulaştırır. HTTPS/TLS in-transit gizlilik ve integrity sağlar; server’ın password saklama politikasını kendiliğinden düzeltmez. Login form’u ve authenticated sayfalar için transport sınırı birlikte düşünülür.
WEB-14.01 · Core · Identity, credential ve password authentication ↗Credential lifecycle, yalnız ilk login değildirPassword değişimi ve recovery hesabın gelecekteki kontrolünü değiştirir. Aktif session tek başına hassas credential değiştirme için yeterli assurance sayılmayabilir; mevcut authenticator veya uygun reauthentication koşulu uygulanır. Password değişti diye bütün mevcut session ve token’ların sihirli biçimde invalid olduğunu varsayma; revocation policy gerekir.
WEB-14.01 · Core · Identity, credential ve password authentication ↗Subject, credential ve permission’ı ayrı gözleDefensive incelemede Duru adının UI’da görünmesini authenticated subject kanıtı sayma. Login acceptance, resolved subject ve resource decision ayrı evidence alanları olmalıdır. Credential failure’da subject kurulmadığını; authn success/authz deny durumunda subject kurulsa da resource verilmediğini izle.
WEB-14.01 · Red · Identity, credential ve password authentication ↗Verifier’ın koruduğu boundary’yi doğru yorumlaSalt ve slow hashing, verifier database disclosure riskini azaltır; weak password, credential reuse veya authenticated session disclosure gibi bütün riskleri çözmez. Salt’ı gizlemeyi password security’nin temel şartı gibi sunma.
WEB-14.01 · Red · Identity, credential ve password authentication ↗Verified subject sonrası resource policy uygulaAuthentication component’in sonucu explicit subject ve assurance context olmalıdır. Downstream policy action/resource/tenant ilişkisini trusted verilerle değerlendirir; username veya displayName eşleşmesini permission yerine kullanmaz.
WEB-14.01 · Blue · Identity, credential ve password authentication ↗Password handling’i library boundary’sinde tutEstablished password-hash verify API, unique salt, recorded algorithm/cost metadata ve gerektiğinde rehash akışını kullan. Production parametrelerini güncel rehber ve workload ölçümüyle seç; bu dersin cost-profile alias’ını configuration olarak kopyalama.
WEB-14.01 · Blue · Identity, credential ve password authentication ↗Audit’te decision kalsın, credential kalmasınCredential match sonucu, resolved subject alias’ı, account policy sonucu ve action decision’ı gözlem için yeterli olabilir. Raw password, verifier ve session secret yazmak gerekli değildir. Hash profile upgrade’i de credential içermeyen bir policy olayına bağlanabilir.
WEB-14.01 · Blue · Identity, credential ve password authentication ↗loginIdentifier / trustedSubjectİddia edilen account ile successful verify sonrası kurulan trusted subject farklıdır.
WEB-14.01 · Identity, credential ve password authentication ↗credentialRecordSalt/verifier/cost alanlarının anlamını gösteren alias record; gerçek hashing formatı değildir.
WEB-14.01 · Identity, credential ve password authentication ↗credentialMatches / authorizedAuthentication predicate ile resource policy sonucunu ayrı tutar.
WEB-14.01 · Identity, credential ve password authentication ↗resourceDeliveredYalnız gerekli authn ve authz koşulları geçince private representation verilir.
WEB-14.01 · Identity, credential ve password authentication ↗Request taşıyıcısı ile server anlamı farklıdırAtlas API’sine bir credential string ulaşması yalnız taşıma observation’ıdır. Server bunun hangi scheme’e ait olduğunu, geçerli olup olmadığını, hangi client/subject context’ini temsil ettiğini ve request’e hangi permission’ı verdiğini belirlemelidir.
WEB-14.02 · Core · Basic authentication, API key ve bearer token ↗HTTP Basic: Base64 encoding, encryption değilRFC 7617 Basic scheme’de user-id ve password bir user-pass değerinde birleştirilir ve Base64 ile temsil edilir. Authorization header’ında scheme adı Basic’tir. Bu encoding geri dönüştürülebilir temsil sağlar; password’ü encrypt etmez, bir hash verifier da üretmez.
WEB-14.02 · Core · Basic authentication, API key ve bearer token ↗API key: kimin veya hangi projenin anahtarı?API key’in anlamı ürün sözleşmesine bağlıdır. Bir key application/project attribution, quota veya paid plan ile ilişkili olabilir; başka tasarımda service principal credential’ı olabilir. “API key valid” sonucu Duru adlı end user’ın authenticate olduğu anlamına otomatik gelmez.
WEB-14.02 · Core · Basic authentication, API key ve bearer token ↗Bearer: possession yeterli proof olabilirRFC 6750 bearer credential’da token’a sahip taraf, kullanmak için ayrı bir cryptographic key possession proof’u vermek zorunda değildir. Bu yüzden token confidentiality kritik sınırdır. Bearer “token içeriği okunamıyor” demek değildir; opaque string de JWT gibi readable payload taşıyan token da bearer olarak kullanılabilir.
WEB-14.02 · Core · Basic authentication, API key ve bearer token ↗Transport, storage ve policy ayrı savunmalardırTLS in-transit koruma sağlar; token’ın yanlış log’a yazılmasını veya yanlış client storage’a konmasını kendiliğinden önlemez. Password, API key ve bearer credential’ı URL’ye koymak history, log ve referrer gibi yerlere gereksiz yayılma riski doğurur. İlgili protocol’un protected header/body taşımasını tercih et.
WEB-14.02 · Core · Basic authentication, API key ve bearer token ↗401, 403 ve challenge’ın amacıHTTP authentication challenge ile application permission denial farklıdır. Basic ve Bearer scheme’leri challenge/response framework’ünde kendi anlamlarına sahiptir. OAuth bearer için invalid_token ve insufficient_scope farklı sebeplerdir; status ve WWW-Authenticate response’ı protocol’a göre düzenlenir.
WEB-14.02 · Core · Basic authentication, API key ve bearer token ↗Header varlığı identity kanıtı değildirDefensive review’da scheme, presented alias, registry binding, validity ve action decision’ı ayrı gör. Authorization adlı header’ın varlığı resource authorization’ının yapıldığını göstermez; isim protocol convention’dır.
WEB-14.02 · Red · Basic authentication, API key ve bearer token ↗Credential yayılımını azaltLog, error message, analytics ve cache key içinde raw credential gereksizdir. Diagnostic gözlemde scheme ve opaque correlation alias yeterli olabilir. URL’ye taşınan credential’ı “Base64 olduğu için güvenli” veya “JWT olduğu için public” sayma.
WEB-14.02 · Red · Basic authentication, API key ve bearer token ↗Credential türünü ve subject sözleşmesini açık yazEndpoint için kabul edilen scheme ve credential formatını belirle. Registry/token validation sonucu end-user subject, service principal veya project attribution mı veriyor? Bu farkı policy’nin input type’ında koru.
WEB-14.02 · Blue · Basic authentication, API key ve bearer token ↗Güçlü transport ve redaction kullanBasic ve bearer gibi sensitive credential transport’unda HTTPS/TLS uygula; endpoint certificate validation’ı client sorumluluğunun parçasıdır. Reverse proxy sonrası trusted transport boundary’yi de tasarımda belirt.
WEB-14.02 · Blue · Basic authentication, API key ve bearer token ↗Acceptance’ı action boundary’sinde kapatToken/key recognition sonrası validity, issuer/audience veya registry binding ve action permission’ı uygula. Basic için password verifier ve account policy gerekir. Geçerli token’ın yanlış resource’a kabul edilmesi format parsing başarısıyla savunulamaz.
WEB-14.02 · Blue · Basic authentication, API key ve bearer token ↗wireShapeYalnız taşıyıcı biçimini anlatan invalid alias string; çalıştırılacak HTTP request değildir.
WEB-14.02 · Basic authentication, API key ve bearer token ↗bindingKind / subjectApplication attribution ile end-user context ayrımı; key tanınması user doğrulaması değildir.
WEB-14.02 · Basic authentication, API key ve bearer token ↗credentialValid / actionAllowedRecognition/validity ve resource permission ayrı predicate’lerdir.
WEB-14.02 · Basic authentication, API key ve bearer token ↗representationDeliveredBu fixture private-note policy’sinin nihai sonucu.
WEB-14.02 · Basic authentication, API key ve bearer token ↗JWT bir claims representation’ıdırJWT, bir subject hakkında claim taşıyan compact representation ailesidir. Sık görülen signed JWS Compact biçiminde üç bölüm bulunur: protected header, payload ve signature/MAC. Noktalarla ayrılan bu bölümler Base64url ile temsil edilir. Header alg gibi cryptographic metadata, payload ise claims taşır.
WEB-14.03 · Core · JWT claims ve token lifecycle ↗Claim isimleri hangi soruları yanıtlar?iss issuer’ı, sub subject’i, aud intended recipient’ları belirtir. Subject değeri issuer bağlamında unique olabilir; aynı sub metni iki issuer’da aynı kişi anlamına gelmeyebilir. aud tek string veya array olabilir ve recipient kendi identifier’ını beklenen audience içinde bulmalıdır.
WEB-14.03 · Core · JWT claims ve token lifecycle ↗Decode sonrası claims hâlâ tentative’tirParser JSON alanlarını okuyabilir; bu aşamadaki sub ve scope trusted policy input değildir. Cryptographic validation doğru key, uygun algorithm ve bütün required cryptographic operation’ları doğrulamalıdır. Herhangi bir required doğrulama başarısızsa token kabul edilmez.
WEB-14.03 · Core · JWT claims ve token lifecycle ↗Valid signature, doğru kullanım demek değildirCryptographic doğrulama geçse bile exact issuer, intended audience, required claim set, token purpose ve time koşulları uygulanır. RFC 9068 için typ at+jwt veya application/at+jwt olmalıdır. Bir ID token’ın farklı amacını access-token validation kurallarıyla ayır; “signed JWT” ortaklığı type sınırını kaldırmaz.
WEB-14.03 · Core · JWT claims ve token lifecycle ↗Access ve refresh token farklı hedeflere giderOAuth access token protected resource server için credential’dır. Refresh token yeni access token almak için authorization server’a sunulur; resource API’ye gönderilmez. Refresh token issuance optional’dır ve token biçimi JWT olmak zorunda değildir.
WEB-14.03 · Core · JWT claims ve token lifecycle ↗Stateless validation, stateless lifecycle değildirSelf-contained signed access token, resource server’ın her request’te issuer’a lookup yapmadan signature/claim policy değerlendirmesine izin verebilir. Bu, logout, revocation veya permission change’in bütün server’lara otomatik yayıldığı anlamına gelmez.
WEB-14.03 · Core · JWT claims ve token lifecycle ↗Readable claim’i trusted claim sanmaİncelemede decoded, cryptographically verified, profile-valid ve action-authorized durumlarını ayrı izle. sub=subject-duru alanını okumak identity’nin kabul edildiğini göstermez. Signature doğrulaması olumlu olsa bile audience, purpose ve time koşulları henüz değerlendirilmemiş olabilir. Alanın okunabildiği aşamadan resource erişimine doğrudan geçmek, farklı gate’leri tek bir sonuçta birleştirir.
WEB-14.03 · Red · JWT claims ve token lifecycle ↗Lifecycle’daki bağımsız state’leri izleBrowser’daki yerel cleanup, AS’deki refresh family state’i ve resource server’daki access-token acceptance aynı değişken değildir. Client alias’ı silmiş olabilir; AS’de family hâlâ active kalabilir. AS family’yi revoke etmiş olsa da önceden issued access token’ın bütün API’lerde aynı anda reddedildiği sonucu çıkmaz. Her bileşenin state’i kendi kaynağından izlenmelidir.
WEB-14.03 · Red · JWT claims ve token lifecycle ↗Library ve profile sınırlarını birlikte uygulaYerleşik bir JOSE/JWT library kullan; izinli algorithm’ları ve expected issuer’a bağlı trusted key set’ini açıkça yapılandır. Decode helper’ı verification API’si değildir. Token metadata’sını trust configuration yerine koymadan, profile’ın gerektirdiği header ve claim shape’ini doğrula.
WEB-14.03 · Blue · JWT claims ve token lifecycle ↗Refresh lifecycle’da atomic rotation kurRefresh token’ı yalnız doğru AS endpoint’inde ve protected transport/storage ile işle. Client/grant binding ve original scope’u koru. Rotation seçilmişse invalidate-old, issue-new ve family relationship güncellemesini tutarlı bir boundary’de yap; iki active successor’ı yanlışlıkla üretme.
WEB-14.03 · Blue · JWT claims ve token lifecycle ↗Revocation beklentisini ürün davranışına bağlaLogout sonrasında hangi access token ne kadar kabul edilebilir, hangi store/denylist kontrolü gerekir ve refresh family ne zaman kapatılır? Bu soruları JWT seçimiyle çözüldü sayma. Failover ve cache freshness etkisini current-authorization beklentisiyle birlikte düşün.
WEB-14.03 · Blue · JWT claims ve token lifecycle ↗header / claimsDecoded görünüm; verification öncesi trusted authorization input değildir.
WEB-14.03 · JWT claims ve token lifecycle ↗policyIssuer/audience/type/algorithm ve required-claim seçimleri uygulamanın approved profile’ından gelir.
WEB-14.03 · JWT claims ve token lifecycle ↗signatureValid / tokenAccepted / actionAllowedCryptographic predicate, profile acceptance ve resource permission ayrı durumlar.
WEB-14.03 · JWT claims ve token lifecycle ↗refreshFamilyAS refresh state’i; resource server access-token revocation’ın otomatik kanıtı değildir.
WEB-14.03 · JWT claims ve token lifecycle ↗Duru password’ü geçti; işlem henüz bitmediAtlas ikinci factor isteyen bir action için Duru’nun password sonucunu alır. WEB-14.01’deki verified subject burada ilk aşamanın girdisidir. Application bunu mfaComplete=true yapmaz: başka bir authenticator’ın ilgili account’a bağlandığını ve bu attempt için gereken sonucu verdiğini kontrol edecektir.
WEB-14.04 · Core · MFA’nın güven varsayımları ↗Factor sayısı prompt sayısı değildirKnowledge, possession ve inherence farklı factor türleridir. Password ardından ikinci password veya merkezi PIN sorulması aynı knowledge türünü iki kez kullanır. Password ile authenticator possession kanıtı ise farklı türler olabilir. İki authenticator’ın aynı account’a doğru bağlanması ve tek zayıf recovery yoluyla birlikte değiştirilememesi ayrıca gerekir.
WEB-14.04 · Core · MFA’nın güven varsayımları ↗Challenge lifecycle: issue, verify, consumeÖrnekte Application challenge-ledger-a kaydını attempt, subject, factor ve purpose=mfa-login ile ilişkilendirir. Browser’a dönen challenge alias gerçek OTP değildir; enrolled authenticator’ın output’u yalnız OTP_RESPONSE_ALIAS ile temsil edilir. OutputMatches=true, trusted verify sonucunu açıklamak için verilen bir girdidir.
WEB-14.04 · Core · MFA’nın güven varsayımları ↗OTP, push ve WebAuthn aynı phishing boundary’yi sağlamazMFA password disclosure etkisini azaltabilir; bu, her MFA protocol’ünün phishing-resistant olduğu anlamına gelmez. NIST’in terimi, impostor verifier’a geçerli authenticator output’u vermeyi kullanıcı dikkatine dayanmadan önleyen protocol özelliğidir. Manual OTP entry bu verifier binding’i sağlamaz; WebAuthn verifier name binding kullanabilir.
WEB-14.04 · Core · MFA’nın güven varsayımları ↗Verified output yanlış attempt’e yetki veremezNormal işlev, enrolled authenticator’ın sonucunu Duru’nun bekleyen attempt’ine bağlamaktır. Sadece “output doğru” boolean’ını global bir MFA flag’ine çevirmek subject, purpose ve challenge lifecycle ilişkisini kaybettirir. Etki, yanlış veya stale context’e elevated assurance verilmesi olabilir.
WEB-14.04 · Red · MFA’nın güven varsayımları ↗Bağımsızlık recovery ve fallback boyunca korunurBirden fazla factor’dan beklenen yarar, yalnız normal login’deki prompt’lara bağlı değildir. Factor replacement veya alternative API aynı assurance kapısını atlıyorsa authenticated state o zayıf yolun koşullarıyla kurulabilir. Kapsam affected account ve verilen session/action yetkisidir; MFA hatası her resource’a otomatik erişim vermez.
WEB-14.04 · Red · MFA’nın güven varsayımları ↗Attempt, factor ve terminal sonucu birlikte gözleApplication’ın challenge issue/verify/consume kararından gelen sanitized audit, Browser prompt gözleminden daha farklı kanıttır. attemptRef, subjectRef, factorType, purposeMatched, challengeState, lifetimeValid ve mfaEstablished alanları bizim öğretim şemamızdır; ürünün hazır SIEM field adları değildir.
WEB-14.04 · Blue · MFA’nın güven varsayımları ↗Erişilebilir rollout ve recovery envanteriPolicy değişikliğini account/factor inventory ile başlat: enrolled methods, factor migration, erişilebilirlik ihtiyacı ve fallback owner’ı bilinmeli. Device kaybı, geç output ve iptal edilen prompt gibi normal hata durumlarını ölçmeden her rejection’ı kötü niyet sayma.
WEB-14.04 · Blue · MFA’nın güven varsayımları ↗Assurance yükseltmesini server kararı yapProvider veya library’nin authenticator verification sonucunu, ilgili account’ın kayıtlı factor’ına ve bu authentication attempt’ine bağla. İki ayrı parola iki bağımsız factor değildir; seçilen assurance policy’si hangi factor kombinasyonunu kabul ettiğini belirlemelidir. Bu örnekte subject, purpose, lifetime ve unused challenge state kontrolü tamamlanmadan mfaEstablished verilmez. Challenge consumption ile assurance yükseltmesini tutarlı bir state geçişinde yap; doğrulama servisi yanıt vermediğinde Browser prompt’unu başarı yerine kullanma.
WEB-14.04 · Blue · MFA’nın güven varsayımları ↗attemptRef / subject / challengeRefKararı tek attempt/account/pending record’a bağlayan correlation alias.
WEB-14.04 · MFA’nın güven varsayımları ↗outputMatches / unused / withinLifetimeSupplied verification ve lifecycle predicate’leri; output bytes veya clock ölçümü değil.
WEB-14.04 · MFA’nın güven varsayımları ↗distinctFactors / mfaEstablishedAynı factor türü tekrarı ayrı factor sayılmaz; completion tüm acceptance kapılarını gerektirir.
WEB-14.04 · MFA’nın güven varsayımları ↗selectorAuthored XML integrity seçimi; missing field yeterli kanıt sağlamaz.
WEB-14.04 · MFA’nın güven varsayımları ↗Duru hangi raporu okuyabilir?Atlas ve Orion iki ayrı kuruluşun tenant’larıdır. Duru Atlas’ın member hesabıyla login olur. report-atlas-01, Atlas içinde Duru’ya ait bir rapordur. Ekin aynı tenant’ta reviewer rolündedir; raporları incelemesi işinin bir parçasıdır. Orion’un raporları ikisinin de iş kapsamının dışındadır. Bu örnekte her actor bir tenant’a bağlıdır; birden fazla tenant üyeliği olan ürünlerde aktif tenant seçimi ayrıca doğrulanır.
WEB-14.05 · Core · Resource authorization ve tenant boundaries ↗Kararın dört girdisi ve bunları sağlayan tarafSubject, isteği yapan doğrulanmış principal’dır: actorId, aktif üyelik ve rol bilgisi. Object hedef rapordur: objectId, ownerId, tenantId ve raporun state’i. Action burada report.read’dir. Context, server’ın bu işlem için doğruladığı aktif tenant ve policy version gibi ek koşullardır. Rol subject’in bir özniteliği, ownership ise subject ile object arasındaki ilişkidir; birbirinin yerine geçmezler.
WEB-14.05 · Core · Resource authorization ve tenant boundaries ↗Bir allow kararını adım adım açmakDuru, report-atlas-01 için read ister. Handler önce aktif principal ve doğrulanmış Atlas context’i kurar. Policy hedef metadata’nın Atlas’a ait olduğunu kontrol eder. Sonra action’ı tanır, member rolünün bu action için değerlendirilebildiğini görür ve ownerId ile actorId ilişkisini karşılaştırır. Bütün gerekli koşullar sağlandığında allow/OWNER_READ çıkar. Korunan rapor body’si ancak bundan sonra sunulur.
WEB-14.05 · Core · Resource authorization ve tenant boundaries ↗Deny, veri döndürmemek ve işlem yapmamak demektirPolicy bilinmeyen action, eksik context veya tanımlanmamış role için açık bir izin bulamazsa deny üretir. Karar servisi hata verdiğinde protected işlem izin verilmiş gibi devam etmez. Read için confidential body gönderilmez; write için değişiklik yapılmaz. Error handling’in kendisi alternatif bir allow yolu oluşturmamalıdır. Public resource’lar ayrı ve açık bir policy ile herkese açılabilir; bu örneğin tenant kontrolünü bütün web kaynaklarına zorla uygulamak gerekmez.
WEB-14.05 · Core · Resource authorization ve tenant boundaries ↗Karar farklı veri yollarında kaybolmamalıRapor ekrandan, download yolundan veya background export job’ından erişilebilir. Her yol aynı entitlement’ı korumalıdır. Tenant equality tek başına yeterli değildir: Atlas içindeki ownership ve action kuralı da uygulanır. Aşağıdaki uygulamalar bu rapor policy’sini farklı veri yollarına taşıyan tasarım örnekleridir; tek bir middleware bütün alt katmanları kendiliğinden güvenli yapmaz.
WEB-14.05 · Core · Resource authorization ve tenant boundaries ↗Bir kararın geçerlilik süresiEkin’in reviewer rolü kaldırılırsa eski allow kararı sonraki read için yeterli değildir. Policy version, kullanılan kural setini ayırt etmeye yardım eder; tek başına role değişikliğini yürürlüğe sokmaz. Güncel membership, cache invalidation ve kararın uygulandığı katman birlikte tasarlanır. Queue gecikmesi veya uzun işlem sırasında değişen yetki için ürün açık bir execution kuralı belirlemelidir.
WEB-14.05 · Core · Resource authorization ve tenant boundaries ↗Hangi güven varsayımı kırılır?Normal akışta handler, authentication sonucuyla güvenilir principal kurar; policy principal’ın bu object/action için entitlement’ını belirler. “Login başarılı, öyleyse rapor okunabilir” kestirmesi bu iki kararı birleştirir. Hata authentication’ın başarısız olması değil, doğrulanmış kimliğe sahip bir request’in gerekli object yetkisi olmadan veri almasıdır.
WEB-14.05 · Red · Resource authorization ve tenant boundaries ↗Object, function ve property aynı soru değildirObject-level kontrol “bu rapor üzerinde bu işlem yapılabilir mi?” diye sorar. Function-level kontrol örneğin report.export işlevinin bu subject’e açık olup olmadığını sorar. Property-level kontrol ise izin verilen report.read sonucunda hangi alanların okunabileceğini veya update sırasında hangi alanların değişebileceğini sınırlar. Birini geçirmek diğerlerini otomatik olarak geçirmez.
WEB-14.05 · Red · Resource authorization ve tenant boundaries ↗Tenant kontrolünü yalnız bir yerde yapmakAPI’nin rapor okuma yolunda tenant kontrolü bulunması, aynı raporun cache veya private export yolunda da bulunduğu anlamına gelmez. Broken trust assumption, downstream component’in “buraya geldiyse zaten yetkilidir” demesidir. Background worker’ın yalnız kendi service rolüne bakması da originating actor’ın scope’unu genişletebilir.
WEB-14.05 · Red · Resource authorization ve tenant boundaries ↗HTTP log ile decision ledger’ın görevleriHTTP access log path, status ve timing gösterebilir; ownership comparison veya tenant policy’nin çalıştığını tek başına söylemez. Application’ın policy evaluator’ı server-verified actorId, subjectTenant, objectTenant, action, objectId, decision, reason ve policyVersion alanlarıyla ayrı bir decision event üretir. Bunlar bu örneğin özel şemasıdır; standart OWASP event alanları diye sunulmaz.
WEB-14.05 · Blue · Resource authorization ve tenant boundaries ↗Üç farklı kanıt sonucuPozitif kontrol Duru/own-read için allow/OWNER_READ ve yalnız beklenen rapor alanlarının dönmesidir. Negatif kontrol other-owner için deny/OWNER_REQUIRED ve protected body’nin yokluğudur. Cross-tenant kontrol deny/TENANT_MISMATCH üretir. Bu beklenen deny’lar güvenli baseline’dır; her deny saldırı alarmı değildir. Ekin’in Atlas reviewer-read allow sonucu da meşru ownership istisnasıdır.
WEB-14.05 · Blue · Resource authorization ve tenant boundaries ↗Bu fixture için açıklanabilir review mantığıBu derste backend’e özel KQL tablosu uydurmak yerine küçük matrix üzerinde kontrol mantığı kullanılır. Her caseId için expected decision/reason ile observed karar karşılaştırılır; deny case’lerinde deliveredFields boş olmalıdır. Fixture’da subjectTenant ile objectTenant farklıyken allow görmek policy regression adayıdır. Tenant’lar arası açık platform grant’i olan gerçek bir üründe bu predicate tek başına uygun değildir.
WEB-14.05 · Blue · Resource authorization ve tenant boundaries ↗Düzeltme ve regression birlikte ilerlerKontrol bir yolda eksikse önce bütün report erişim yollarını ve policy ownership’ini çıkar. Ortak trusted evaluator veya eşdeğer enforcement kullanan katmanlar kur; tenant context’in bağlantı havuzunda ya da worker reuse sırasında başka işe taşınmadığını doğrula. Değişiklik private download ve cached response gibi yan yolları da kapsamalıdır.
WEB-14.05 · Blue · Resource authorization ve tenant boundaries ↗subjects / objectsÖnceden verilmiş kimlik ve rapor metadata’sı. Client’in role veya owner iddiası değildir.
WEB-14.05 · Resource authorization ve tenant boundaries ↗verifiedContextTenantServer’ın üyelikten kurduğu aktif context; null case’i eksik context kararını gösterir.
WEB-14.05 · Resource authorization ve tenant boundaries ↗ruleOrderBu öğretim modelinin kontrol/gerekçe sırası; çoklu hata durumunda ilk başarısız koşul reason’ı belirler.
WEB-14.05 · Resource authorization ve tenant boundaries ↗expectedPolicy’ye göre olması gereken sonuç. Gerçek runtime observation değildir.
WEB-14.05 · Resource authorization ve tenant boundaries ↗deliveredFieldsAllow halinde izin verilen response field adları; deny durumunda protected field çıkışı beklenmez.
WEB-14.05 · Resource authorization ve tenant boundaries ↗requestId / policyVersionInteraction korelasyonu ve kural seti kimliği; secret veya credential değildir.
WEB-14.05 · Resource authorization ve tenant boundaries ↗Bir account tek bir loggedIn boolean değildirAtlas’ın subject-duru kaydı loginIdentifier, contact verification, accountStatus, credential generation ve authenticator associations tutar. Session bu kaydın kendisi değildir. Yeni account yaratılabilir ama pending-contact state’inde protected login’e uygun olmayabilir; mevcut account disabled olunca password verifier bytes’i hâlâ doğru kalabilir.
WEB-14.S01 · Core · Account lifecycle ve password verification ↗Registration: account claim ile contact kontrolünü ayırDuru registration formunda duru.reader identifier’ını ve contact alias’ını verir. Application uniqueness ve ürün eligibility policy’sini trusted tarafta kontrol eder; password için WEB-14.01’deki uygun adaptive verifier yaklaşımını kullanır. Fixture candidateAllowed ve identifierAvailable sonuçlarını supplied true alır; gerçek kayıt verisi veya password içermez.
WEB-14.S01 · Core · Account lifecycle ve password verification ↗Password policy kayıt/değişiklik anında; verify login anındaEstablished password library, candidate’ı record’daki algorithm/salt/cost metadata ile verify eder; hash decrypt edilmez. Salt secret değildir. Verifier-only backup bile sensitive materyaldir; database ve backup erişimi, credential loglama ve metadata migration birlikte değerlendirilir.
WEB-14.S01 · Core · Account lifecycle ve password verification ↗Verify true sonrası account gate ve güvenli rehashNormal login branch’i active account ve allowed attempt ile başlar. Supplied passwordMatches=true sonrası subject resolve edilir. needsRehash=true ise candidate hâlâ kontrollü verify path’te mevcutken established library yeni salt ve current cost policy ile yeni verifier üretir. Fixture verifier-old-alias→verifier-current-alias değişimini gösterir; hesap aynı subject kalır.
WEB-14.S01 · Core · Account lifecycle ve password verification ↗Throttling state ile public failure farklı yüzeylerThrottling, allowed attempt kararını yönetir; yalnız source IP’ye bağlı bir sayaç account seviyesindeki davranışı tam anlatmaz. Atlas fixture blocked attempt’i KDF çağrısından önce keser. Distributed limit state, contention, reset koşulları ve legitimate user lockout etkisi implementasyona bağlıdır; herhangi bir sayıyı evrensel retry policy diye vermiyoruz.
WEB-14.S01 · Core · Account lifecycle ve password verification ↗Disable, closure ve recovery birbirinin kısayolu değildirAccount eligibility sona erdiğinde authenticator ve erişim ilişkilerini kontrollü şekilde invalidate etmek gerekir. Closure’ın data retention/deletion yönü ürün ve yükümlülüklere bağlıdır; account’un login kapısında closed olması bütün audit veya backup verisinin silindiği anlamına gelmez.
WEB-14.S01 · Core · Account lifecycle ve password verification ↗Credential match ile account eligibility karıştırılırsaNormal login password verify ve account policy’yi aynı trusted decision chain’de birleştirir. Bir match boolean’ını doğrudan session issuer’a vermek pending/disabled/closed state’ini gözden kaçırabilir. Etki, ürünün erişimi kesmek istediği account’a yeni authenticated context verilmesidir; ayrıca resource authorization yine ayrı sınırdır.
WEB-14.S01 · Red · Account lifecycle ve password verification ↗Public response farklılığı neyi açığa çıkarır?Registration veya login yanıtı “bu account yok” ile “password yanlış” durumunu ayırırsa public contract account existence hakkında fazladan bilgi verir. Prerequisite bir endpoint’in bu farkı dışarı açmasıdır; tek observation credential bilgisi veya access permission sağlamaz.
WEB-14.S01 · Red · Account lifecycle ve password verification ↗Account transition ile verify kararını ilişkilendirSanitized application audit subjectRef, accountStatus, contactVerified, attemptAllowed, passwordVerified, contextIssued ve verifierGeneration alanlarını taşıyabilir. Bu fixture alanları standard log event değildir. Candidate password, verifier bytes ve verification token’ı telemetry’ye yazılmaz.
WEB-14.S01 · Blue · Account lifecycle ve password verification ↗Response review ile rate-limit validation’ı ayırPublic response matrix’i absent/wrong/pending/disabled koşullarını aynı contract altında gösterir. Metin eşitliğini, status ve content envelope’u ayrı karşılaştır. Timing eşitliği için kontrollü ölçüm ve yük koşulları gerekir; buradaki boolean fixture bunu çalıştırmaz.
WEB-14.S01 · Blue · Account lifecycle ve password verification ↗Verifier migration ve disablement için kalıcı kontrolCredential generation ve cost policy metadata’sını envantere al. Current policy’ye geçişin kapasite etkisini benchmark et; successful verify sonrası rehash’i stale-reset overwrite sınırıyla uygula. Salt/cost alias’ları production parametresi diye kopyalanmaz.
WEB-14.S01 · Blue · Account lifecycle ve password verification ↗accountStatus / contactVerifiedÜrün eligibility ile communication endpoint kontrolü; identity proofing değil.
WEB-14.S01 · Account lifecycle ve password verification ↗credentialRecordEstablished library record’unu açıklayan salt/cost/verifier alias’ları; gerçek hash veya production cost değil.
WEB-14.S01 · Account lifecycle ve password verification ↗attemptAllowed / verifyCalledThrottle gate blocked ise verification çalışmamış kabul edilir; passwordMatches null unknown’dur.
WEB-14.S01 · Account lifecycle ve password verification ↗contextIssued / rehashCommittedAuthentication context verme ve verifier upgrade ayrı sonuçlardır; generation yarışları ayrıca korunur.
WEB-14.S01 · Account lifecycle ve password verification ↗publicFailures / selectorInternal reason’dan ayrılmış public contract ve own XML integrity selection.
WEB-14.S01 · Account lifecycle ve password verification ↗Future account control hassas bir permission’dırDuru yeni laptop’a passkey eklemek ister. Bu action sıradan bir profil metni düzenlemez: yeni private key’i kontrol eden authenticator gelecekte subject-duru için authentication yapabilecektir. Atlas Browser’daki active session’ı tek başına association yetkisi saymaz; fresh reauthentication ve trusted account binding ister.
WEB-14.S02 · Core · Recovery, passkeys ve hassas hesap değişiklikleri ↗Passkey: server’da password yerine public-key associationPasskey bir website/application account’una bağlı FIDO credential’dır. WebAuthn’de RP server credential ID, subject/user handle ve public key ilişkisinin trusted kaydını tutar. Authenticator private-key operasyonunu yapar; server private key veya device unlock PIN’i istemez.
WEB-14.S02 · Core · Recovery, passkeys ve hassas hesap değişiklikleri ↗Registration ile authentication ceremony’leri ayrınavigator.credentials.create() yeni credential üretimi/registration için, navigator.credentials.get() mevcut credential ile authentication assertion için kullanılır. RP server ceremony options/challenge sağlar; Browser authenticator API’si ile çalışır ve çıkan response’u application transport’u üzerinden RP’ye iletir.
WEB-14.S02 · Core · Recovery, passkeys ve hassas hesap değişiklikleri ↗Challenge, RP ID ve origin farklı bağlardırAtlas fixture RP ID=library.atlas.example ve expected origin=https://library.atlas.example seçer. RP ID bir domain scope’udur; origin scheme/host/port bağlamıdır. Birbirinin yerine string comparison yapılmaz. Daha geniş RP ID scope seçimi subdomain trust yüzeyini değiştirir; credential cookie Domain/Path kurallarıyla scope edilmez.
WEB-14.S02 · Core · Recovery, passkeys ve hassas hesap değişiklikleri ↗Recovery bir login success kısayolu değildirDuru eski authenticator’ını kaybettiğinde recovery ihtiyacı doğabilir. Forgot-password, existing authenticator ile password replacement ve bütün gerekli authenticator’ların kaybından sonra account recovery aynı durum değildir. Kullanılabilir proof, account assurance ve ürün risk analysis’i seçilen recovery yolunu belirler.
WEB-14.S02 · Core · Recovery, passkeys ve hassas hesap değişiklikleri ↗Reset, factor replacement ve notification’ın sınırıPassword reset token’ı securely generated, purpose-bound, single-use ve uygun lifetime’la saklanır; reset request’inin kendisi account state’ini değiştirip kullanıcıyı kilitlememelidir. Normal login’den ayrı restricted state ile password update tamamlanır. Kullanılmış recovery proof’u tekrar supplied input yapılınca unused=false gate’i mutation’ı durdurur.
WEB-14.S02 · Core · Recovery, passkeys ve hassas hesap değişiklikleri ↗Doğru crypto, yanlış association’ı doğru yapmazRegistration’ın normal yararı yeni authenticator public key’ini authorized subject’e bağlamaktır. Fresh reauth/account binding veya ceremony origin kapısı atlanırsa key kaydı yanlış subject/purpose’e eklenebilir. Prerequisite received result’un trusted association gate’ine kontrolsüz girmesidir; etki bu credential ile gelecekte kurulan account context’iyle sınırlıdır.
WEB-14.S02 · Red · Recovery, passkeys ve hassas hesap değişiklikleri ↗Recovery yetkisi normal access’e sessiz yükselmesinNormal recovery, belirlenen proof sonrası kontrollü credential replacement sağlar. Recovery capability’yi unrestricted session’a çevirmek veya aynı proof’u tekrar kullanılabilir bırakmak daha geniş erişim/yeni değişiklik yetkisi doğurabilir. Tek response’un başarılı görünmesi bütün lost-key/session state’lerinin kapandığını kanıtlamaz.
WEB-14.S02 · Red · Recovery, passkeys ve hassas hesap değişiklikleri ↗Association ledger neyi gösterebilir?RP’nin sanitized decision kaydı ceremonyRef, subjectRef, originMatched, rpIdHashMatched, challengeMatched, freshReauth ve newCredentialBound sonuçlarını ilişkilendirebilir. Public-key/credential correlation ref secret gibi authentication sağlamaz ama privacy ve retention yönünden yine korunur; private key, recovery secret ve biometric veri loga verilmez.
WEB-14.S02 · Blue · Recovery, passkeys ve hassas hesap değişiklikleri ↗Recovery success için dört ayrı sonucu izleProof consumed, replacement credential generation, old affected association/session invalidation ve independent notification ayrı state değişiklikleridir. Notification queue kaydı delivery kanıtı değildir; Browser’ın yeni password input’u accepted mesajı da eski resource server access token’ının anında bittiğini göstermez.
WEB-14.S02 · Blue · Recovery, passkeys ve hassas hesap değişiklikleri ↗Browser ceremony ile account policy birlikte doğrulanırEstablished WebAuthn library ile supported Browser/device matrix’inde RP ID, allowed origins, userVerification, platform/roaming ve sync davranışını test et. API’nin available olması bütün credential’ların aynı assurance veya recovery özelliğine sahip olduğunu göstermez. Origin allowlist veya reverse-proxy external origin değişimleri kontrollü review gerektirir.
WEB-14.S02 · Blue · Recovery, passkeys ve hassas hesap değişiklikleri ↗rpId / expectedOriginDomain credential scope ile scheme/host/port origin farklıdır; cookie scope değildir.
WEB-14.S02 · Recovery, passkeys ve hassas hesap değişiklikleri ↗credentialAlias / userHandleAlias / publicKeyAliasAccount-key association’ı izleyen alias’lar; gerçek credential bytes veya usable key değil.
WEB-14.S02 · Recovery, passkeys ve hassas hesap değişiklikleri ↗registrationRowsFresh proof ve ceremony acceptance kapıları sonucu; crypto sonuçları supplied predicate’tir.
WEB-14.S02 · Recovery, passkeys ve hassas hesap değişiklikleri ↗recoveryRowsApproved evidence/assurance supplied; restricted reset, proof consume ve affected invalidation ayrı.
WEB-14.S02 · Recovery, passkeys ve hassas hesap değişiklikleri ↗notificationQueued / ordinarySessionIssuedQueue=true delivery değildir; recovery başarı normal login session’ı otomatik açmaz.
WEB-14.S02 · Recovery, passkeys ve hassas hesap değişiklikleri ↗Token biçimi hangi korumayı taşır?Atlas, Tea & Bread başlıklı public note için Duru’ya notes-read amaçlı bir access context verir. JWT claims taşıyan biçimdir; JWS signature veya MAC ile integrity, JWE authenticated encryption ile confidentiality ve integrity sağlar. JWS Compact üç, JWE Compact beş parça taşır; parçaları saymak validation değildir. Signed payload genellikle okunabilir ve Base64url encryption sağlamaz. JWE decrypt edilse bile expected issuer’ın kimliği tek başına kanıtlanmış olmaz; key provenance ve acceptance profile’ı ayrıca gerekir. Nested token’da gerekli outer ve inner cryptographic operation’ların tamamı doğrulanmalıdır. Artifact header ve claims alanlarını ayrı gösterir. signatureVerifiedDeclared önceden verilmiş bir sonuçtur; gerçek JWT string’i veya parser çıktısı değildir.
WEB-14.S03 · Core · Token verification, purpose ve key lifecycle ↗Verifier kendi acceptance profile’ını seçerVerifier, alg alanının istediği herhangi bir algorithm’ı seçmez; application allowedAlgorithms ve key kullanımını aynı cryptographic operation’da sınırlar. kid, trusted issuer key set’i içinde seçim ipucudur ve trust anchor değildir. Atlas issuer’ı, issuer-subject pair’ini, audience’ı, typ değerini ve notes-read purpose’ını bekler. aud bir string veya string array olabilir; eşleşme hedef recipient’a göre değerlendirilir. Buradaki purpose uygulamaya özel claim, atlas-notes+jwt ise örneğin profile type’ıdır; bütün JWT’ler için zorunlu değildir. Registered claim’lerin tamamı her uygulamada required sayılmaz; bu profile requiredClaims listesini açıkça seçer. API access context, ID token ve başka amaçlı signed object farklı acceptance rules ister. Identity kabul edildikten sonra object/action authorization ayrıca yürür.
WEB-14.S03 · Core · Token verification, purpose ve key lifecycle ↗Time ve key lifecycle tek karar değildirNumericDate, UTC epoch’tan geçen saniyeleri sayar; JavaScript milliseconds ile karıştırılmaz. Clock skew kabul etmeyen bu örnekte now >= nbf ve now < exp gerekir; now == exp sınırında token reddedilir. iat issuance bilgisidir, kendi başına not-before veya logout kontrolü değildir. Üretimde clock skew ve maximum age acceptance profile’ına göre belirlenir. Active signing key ile eski verification key bir süre birlikte kullanılabilir; overlap süresi deployment policy’sidir. Atlas’ta key-v1 verifyUntil sınırını geçmiş, key-v2 ise active kalmıştır. Unknown kid için trusted kaynaktan key bilgisi alınamaması kabul kanıtı vermez, fakat otomatik forgery kanıtı da değildir. Rotation, emergency revocation, cache propagation ve session logout farklı olaylardır. Header’ın bildirdiği URL’yi güven kaynağı yapmak yerine önceden güvenilen issuer-key bağı korunur.
WEB-14.S03 · Core · Token verification, purpose ve key lifecycle ↗Crypto success’ı yanlış amaçta kullanmakSignature verification’ın olumlu olması, belirli bytes’ın yapılandırılmış key ile doğrulandığını söyler; token’ın bu recipient ve operation için uygun olduğunu söylemez. İncelenen yanlış varsayım, trusted issuer’ın bütün signed claim set’lerinin her consumer’da aynı anlamı taşımasıdır. Bu karışıklık, birden fazla purpose/profile bulunup consumer’ın audience, type veya required value sınırlarını ayırmamasıyla oluşabilir. Etki identity veya erişim kapsamının yanlış yorumlanmasıdır; buradan bütün hesapların ele geçirildiği sonucu çıkmaz. wrong-purpose kaydı signatureVerifiedDeclared=true bırakır ama API acceptance’ını reddeder; resource delivery ve title body oluşmaz. Birbirinden ayrılan profile rules ile object authorization birlikte sınırı korur. Encryption tek başına yanlış purpose kullanımını düzeltmez.
WEB-14.S03 · Red · Token verification, purpose ve key lifecycle ↗Key seçimini güven kaynağı sanmakNormal key rollout, eski key’i belirli süre verification için tutabilir; key-v1 görülmesi token’ın expired olduğu anlamına gelmez. Yanlış varsayım, kid’in bulunmasının key’in issuer’a ait ve hâlâ izinli olduğunu kanıtlamasıdır. Stale cache, rollover gecikmesi veya trusted key service outage gibi meşru nedenler unknown sonuç doğurabilir; bu yüzden key-unavailable ayrı reason’dır. Retired kaydında time claims geçerli kalsa da application key policy’si kabulü reddeder. Kontrol trusted provenance’ı, algorithm/use bağını ve retirement veya revocation propagation’ını korur. Olası etki bu consumer’ın kabul ettiği claim context’ine bağlıdır. Alias’ların bulunması key materyalinin mevcut veya signature’ın doğrulandığı kanıtı değildir.
WEB-14.S03 · Red · Token verification, purpose ve key lifecycle ↗Verifier kararını alanlara ayırAccepted/denied yanında profile ID, yapılandırılmış issuer, audience eşleşmesi, purpose/type eşleşmesi, subject mapping, key alias/state, cryptographic validation sonucu ve time gate reason birlikte gözlenir. Raw token, kişisel payload verisi ve private key log’a yazılmaz. Decode kaydı olumlu verification değildir; upstream 401 veya cache miss de tek başına key compromise göstermez. Normal referans active key, doğru recipient/purpose ve sınırlı time aralığıdır. Unknown key, invalid signature ve retired key aynı reason’da birleştirilmez. Trusted kaynağın freshness ve refresh sonucu aynı operation’a bağlanır. Bu örnekte denial’ın görünür sınırı resource’a mesaj gönderilmemesi ve title body üretilmemesidir; gerçek service’in event alanları bu ledger’dan varsayılmaz.
WEB-14.S03 · Blue · Token verification, purpose ve key lifecycle ↗Rotation ve acceptance regression birlikte yürürAcceptance policy version’ını issuer-key provenance ile birlikte yönet. Routine rotation için eski key’in verification overlap süresini, maximum token lifetime’ı ve cache refresh sınırını tanımla; emergency revoke için ayrı karar gerekir. Signature doğruyken yanlış audience/purpose, now=exp, now=nbf ve retired key sonuçlarını ayrı regression case’lerle kontrol et. Unavailable kanıt nedeniyle fail-closed davranmak, request’i saldırı olarak tanımlamakla aynı şey değildir. Library, profile’ın unknown header, critical extension ve nested crypto kurallarını desteklemelidir. Bir signature primitive’inin public note bytes üzerinde çalışması JWT/JWS acceptance kurallarını veya JWKS lifecycle’ını doğrulamaz. Session logout için gereken server state veya revocation kontrolü ayrıca tasarlanır; JWT biçimi kendi başına dağıtık revocation sağlamaz.
WEB-14.S03 · Blue · Token verification, purpose ve key lifecycle ↗formatLedgerClaims ile cryptographic container ayrımı.
WEB-14.S03 · Token verification, purpose ve key lifecycle ↗profileConsumer’ın required acceptance koşulları.
WEB-14.S03 · Token verification, purpose ve key lifecycle ↗keysTrusted alias, use ve lifecycle bilgisi; secret yok.
WEB-14.S03 · Token verification, purpose ve key lifecycle ↗rowsDeclared crypto sonucu ve bağımsız acceptance sonuçları.
WEB-14.S03 · Token verification, purpose ve key lifecycle ↗timeRowsNumericDate zero-skew eşitlik sınırları.
WEB-14.S03 · Token verification, purpose ve key lifecycle ↗Hangi object üzerinde hangi işlem?Duru, public note-A’nın Tea & Bread title’ını Bread & Tea yapmak ister. Public read policy notu okumaya izin verebilir; rename ise ayrı bir action’dır ve owner/tenant ilişkisi ister. Subject, object, action ve context server’ın güvenilen kaynaklarından birleştirilir. Client’ın object reference’ı yalnız hedefi seçer; yetki vermez. Object-level authorization, caller’ın istenen action’ı seçilen resource üzerinde yapıp yapamayacağını değerlendirir. IDOR/BOLA bu ilişkinin yeterince denetlenmemesini anlatır. Integer, UUID veya string seçmek permission sağlamaz; login olmak da note-A için gerekli ilişkiyi kurmaz. Artifact, izinli not ilişkisi ile object-denied sonucunu yan yana gösterir.
WEB-14.S04 · Core · Object, function ve property authorization ↗Function gate object gate’ten farklıdırnotes.rename function’ı, ürün policy’sinde açık bir grant ister. Function-level authorization bu business capability’nin actor’a açık olup olmadığını değerlendirir. Object gate ise capability kullanılırken seçilen resource ile actor’ın ilişkisini kontrol eder. Admin görünümlü URL, hidden button veya route adı bu karar değildir. Bir role function grant verebilir ama bütün tenant object’lerine erişim vermek zorunda değildir. Function-denied satırında objectRelation=true olsa da action capability yoktur. Server, ilgili her request’te bu kararları uygular. Ortak policy module tutarlılığa yardımcı olur; client context’ini trusted kabul etme hatasını düzeltmez. Actor veya policy kanıtı eksikse ret verilir; eksik kanıt kötü niyetin kanıtı değildir.
WEB-14.S04 · Core · Object, function ve property authorization ↗Property sınırı iki yönde yürürObject ve function izinlerinin geçmesi, caller’ın her property’yi okuyup değiştirebileceği anlamına gelmez. Atlas rename input’unu yalnız title alanına map eder; owner, tenant ve publicationState server tarafından yönetilen context/workflow alanlarıdır. Type/schema validation, title’ın string olduğunu söyler; publication state’i değiştirme yetkisi vermez. Mass assignment, generic input binding’in izin verilmeyen internal alanları da business object’e taşımasıyla bu sınırı bozar. Property authorization ve açık input projection birlikte uygulanır. Read tarafında da bütün object’i serialize etmek yerine bu response için izinli alanlar seçilir. Property-denied dalında body ve mutation oluşmaz. Gerçek uygulamada transaction, concurrency ve side effect’ler aynı karar sınırını korumalıdır.
WEB-14.S04 · Core · Object, function ve property authorization ↗Reference ve capability’ye gereğinden çok anlam vermekNormal function call, bilinen note seçimini ve authenticated context’i server’a taşır. Bozulan varsayım, function’ı kullanma hakkının seçilen object üzerindeki bütün action’ları kapsadığıdır. Resource ilişkisi veya tenant scope ilgili action’da değerlendirilmezse read, rename ya da başka business action’ın sınırı genişleyebilir. Public title’ı okumak public rename yetkisi değildir; UUID’nin zor bilinmesi de policy kontrolünü tamamlamaz. Object-denied dalı, functionGrant=true olmasına rağmen title’ı değiştirmez. Function-denied dalı ise actor’a ait object için capability yokluğunu ayırır. İki gate’in de action’a bağlı server policy ve güvenilir resource context ile uygulanması gerekir.
WEB-14.S04 · Red · Object, function ve property authorization ↗Allowed object’ın bütün alanlarına güvenmekNormal rename yalnız değiştirilebilir title’ı taşır. Object ownership, server’ın yönettiği publishing state’i değiştirme hakkı vermez. Bozulan varsayım, validated JSON veya ORM modelinin kendiliğinden authorized property map olduğu düşüncesidir. Yasak input alanlarının internal state’e bind edilmesi ya da response’un izinli read projection dışına genişlemesi bu sınırı bozar. Etki, yanlış publication state veya gereksiz property disclosure olabilir. Property-denied satırında bütün gate sonuçları görünür kalırken write ve protected response body oluşmaz. Closed input fields, actor/action’a bağlı write allowlist ve açık read DTO birbirini tamamlar. Denial body’sini küçük tutmak, daha önce oluşmuş transaction side effect’lerini tek başına geri almaz.
WEB-14.S04 · Red · Object, function ve property authorization ↗Üç gate’in kanıtını aynı action’a bağlaAudit context; actor/session validation referansı, policy revision, business operation, resource/tenant, function grant, object ilişkisi ve property set kararını ayrı tutar. Raw bearer token veya bütün body yerine izinli field adları ve reason code’lar yeterli olabilir. Baseline, Duru’nun kendi public notunda title rename yapmasıdır; diğer üç satır farklı ret koşullarını gösterir. 403 veya 404 seçimi ürünün information-disclosure policy’sine bağlıdır; tek başına hangi gate’in çalıştığını anlatmaz. Correlation, server kararını commit ve response projection ile bağlamalıdır. Eksik telemetry saldırının başarısızlığı demek değildir. Unknown-evidence satırı kabulü durdurur; gözlenmeyen bir hostile action çıkarımı yapmaz. Bu karar tablosu gerçek endpoint veya database audit’i değildir.
WEB-14.S04 · Blue · Object, function ve property authorization ↗Permission regression state sonuçlarını da ölçerRegression’da yalnız allow/deny return value değil, title’ın önceki ve sonraki değeri de karşılaştırılır. Owner, tenant ve publicationState korunmalı; response yalnız izinli key’leri taşımalı; reddedilen dal protected body veya delivery üretmemelidir. Role veya policy version değişince object ilişkisi yeniden değerlendirilir; read ve write field grant’leri aynı varsayılmaz. Server command DTO’su kabul edilen title’ı internal context’ten ayırır; body alanlarını doğrudan model’e yaymaz. Authorization ile mutation arasında resource version veya ilişki değişebiliyorsa concurrency/transaction tasarımı ayrıca gerekir. Local object projection, ORM veya persistence transaction güvenliğini kanıtlamaz. Aynı context, ilgili handler ve asynchronous iş boyunca korunmalıdır.
WEB-14.S04 · Blue · Object, function ve property authorization ↗profileKnown actor/action ve public note başlangıcı.
WEB-14.S04 · Object, function ve property authorization ↗rowsIndependent function/object/property sonuçları.
WEB-14.S04 · Object, function ve property authorization ↗fieldLedgerWrite/read ve server-owned alan sınıfları.
WEB-14.S04 · Object, function ve property authorization ↗projectionsExplicit title command/response; context korunur.
WEB-14.S04 · Object, function ve property authorization ↗unknownEvidenceEksik kanıt deny; attack attribution değil.
WEB-14.S04 · Object, function ve property authorization ↗Şifreyi paylaşmadan sınırlı yetkiMina’nın notları Notes API’de durur; Atlas Exporter bunları bir dosyaya dönüştürmek isteyen ayrı uygulamadır. Exporter’a Mina’nın parolasını vermek, bu tek işin ötesinde yetki ve credential saklama sorumluluğu taşır. Delegated authorization, kullanıcının seçtiği erişimin client’a aktarılmasını düzenler. OAuth hangi API erişiminin verildiğini ele alır; tek başına standart bir kullanıcı kimliği veya her uygulamada ortak login sonucu tanımlamaz. Federation ise uygulamanın başka bir identity authority’nin authentication bilgisini güven sözleşmesiyle kabul etmesidir; bir sonraki derste OIDC bu ayrımı somutlaştırır.
WEB-15.01 · Core · OAuth actors, code flow ve scopes ↗Code bir geçiş belgesidirClient önce seçili AS için transaction açar; redirect URI, requested scopes ve browser’a bağlı correlation bilgisini saklar. Browser AS’ye gider; AS resource owner’ı authenticate eder ve grant kararını verir. Callback’te kısa ömürlü, tek kullanımlık code döner. Client bu dönüşü kendi başlattığı transaction’a bağladıktan sonra code’u token endpoint’te exchange eder. Code API’ye sunulmaz. AS code’un client, redirect URI, validity ve kullanım bağlarını denetler; seçtiğimiz S256 PKCE profilinde verifier’ın code’a bağlı challenge’a uyumu ayrıca gerekir.
WEB-15.01 · Core · OAuth actors, code flow ve scopes ↗Token’ın adresi ve scope’un sınırıAccess token, seçili RS’de erişim için kullanılan credential’dır; OAuth bütün access token’ların JWT olmasını gerektirmez. Opaque token’ın audience ve scope bilgisi RS’nin güvenilir doğrulama bağlamından gelebilir. Artifact’te bu bilgileri okunur policy alanları olarak gösteriyoruz, token bytes olarak değil. Requested notes:read notes:write yerine yalnız notes:read grant edilirse client bu daralmayı kabul eder. Scope adları AS’nin tanımladığı case-sensitive değerlerdir; “read” her uygulamada aynı yetki değildir. RS audience, süre ve scope kontrolünü her request’te kendi resource policy’siyle birleştirir.
WEB-15.01 · Core · OAuth actors, code flow ve scopes ↗Hangi yanlış varsayım yetkiyi genişletir?Exporter yalnız notes:read almışken not kaydetme düğmesinin görünmesi yetki kanıtı değildir. Artifact’te own-note/read allow; own-note/write scope-denied olur. İkinci sonuç bir login hatası değildir: grant gerçek olsa bile seçili action grant dışında kalır. Foreign-tenant/read satırında scope yeterlidir fakat object policy deny verir. Scope denetimini object ownership’in yerine koyan tasarım, izin verilen işlem sınıfını tüm nesnelere yayar; etki hangi verinin okunduğu veya değiştirildiğiyle ölçülür.
WEB-15.01 · Red · OAuth actors, code flow ve scopes ↗Bearer taşımanın etkisiBearer kullanımında possession erişim için önemlidir; bu yüzden token’ı sıradan log veya frontend gösterim alanı saymak yanlış bir saklama varsayımıdır. Burada sender-constrained mekanizmalar yalnız tasarım seçeneği olarak anılır; bearer alias’ın cryptographic client binding sağladığını iddia etmeyiz. PKCE de access token’ı API’de sender-constrained yapmaz ve client secret’ın yerini bütün bağlamlarda almaz. Bu sınırlamalar bir payload veya müdahale yöntemi değil, credential’ın hangi sınırı koruduğunu anlamak içindir.
WEB-15.01 · Red · OAuth actors, code flow ve scopes ↗Normal akışı dar ve denetlenebilir kurAtlas için confidential server-side client, code flow ve S256 PKCE seçiyoruz. Transaction correlation browser’a ve seçili AS’ye bağlanır; credential ve verifier browser’a gönderilmez. Redirect URI kaydı tam karşılaştırılır; native localhost port istisnası bu web profilinde yoktur. Güncel BCP public client için PKCE’yi zorunlu, confidential client için önerilen kılar; CSRF korunması zorunludur fakat her profil aynı state mekanizmasını gerektirmez. Biz tek kullanımlık state’i ayrıca seçeriz. Çok AS’li client issuer veya ayrı redirect gibi mix-up savunmasını açıkça tasarlar.
WEB-15.01 · Blue · OAuth actors, code flow ve scopes ↗Resource regression kanıtıRegression matrisi olumlu own-note/read satırını ve üç ayrı olumsuz sınırı kapsar: write scope’u yok, audience farklı, foreign tenant. Code zaman sınırını 1100 anında expired, 1099’da geçerli olarak sınarız; bu seçili fixture’ın zero-leeway kuralıdır. Sonuç kayıtlarında alias, karar adı ve güvenli correlation bulunur, code veya token bytes bulunmaz. Bu model check’i gerçek AS interoperability’si, token signature testi ya da kullanıcı lab doğrulaması değildir; bunlar ayrı uygulama ve kanıt ister.
WEB-15.01 · Blue · OAuth actors, code flow ve scopes ↗actorsRole sahipliği; dört rol ayrı karardır.
WEB-15.01 · OAuth actors, code flow ve scopes ↗codeClient/redirect/time/use/PKCE bağları; code bytes değildir.
WEB-15.01 · OAuth actors, code flow ve scopes ↗accessGranted scope ve RS audience bağlamı; JWT claim iddiası değildir.
WEB-15.01 · OAuth actors, code flow ve scopes ↗refreshCasesİlk grant’i aşmayan scope kümeleri; credential yenileme çalıştırılmaz.
WEB-15.01 · OAuth actors, code flow ve scopes ↗resourceCasesScope ile object policy’yi ayrı tutan selected kararlar.
WEB-15.01 · OAuth actors, code flow ve scopes ↗OAuth’ın üstüne authentication bilgisiOIDC, OAuth akışına End-User authentication bilgisini standart biçimde ekler. Client burada Relying Party, identity authority OpenID Provider’dır; genel IdP sözcüğü OIDC dışındaki federation sistemleri için de kullanılabilir. Seçili code flow’da openid scope’u OIDC isteğini belirtir. Token endpoint yanıtında ID token ve access token farklı işler görür: ID token RP’ye authentication olayını anlatır; access token uygun resource endpoint’te kullanılır. UserInfo varsa o endpoint’in credential’ı access token’dır; ID token’ı Notes API bearer credential’ı gibi kullanmayız.
WEB-15.02 · Core · OIDC, ID token ve SSO ↗Claim’leri okuyabilmek doğrulamak değildirArtifact’te iss=https://id.example.org, sub=subject-Mina ve aud=[atlas-rp-b] seçilidir. Stable local user anahtarı issuer ile subject çiftidir; display name veya email bu garantiyi taşımaz. RP önceden güvenilen issuer’ı exact karşılaştırır, kendi client_id’sinin audience’ta bulunduğunu ve ek audience’ların kabul edilir olduğunu denetler. Expiration zero-leeway örneğinde now<exp ister. Nonce authentication request’te gönderildiyse ID token’da bulunup transaction’daki nonce ile eşleşmelidir; her OIDC grant’inde her yeni token için bağımsız nonce varmış gibi genelleme yapılmaz.
WEB-15.02 · Core · OIDC, ID token ve SSO ↗Authentication sonucu yanlış yerde kullanılıncaB’ye gelen token’ın audience’ı Atlas A ise signature doğru kabul edilse bile B’de authentication kabul edilmez. Audience-denied branch’i başka uygulama için hazırlanmış bir assertion’ın sınırını gösterir; claim’in okunması bu sınırı kaldırmaz. Untrusted-key satırında kid beklenen alias olsa dahi issuer-key provenance başarısızdır. SignatureValidDeclared=true bu eksik bağın yerine geçmez. Etki analizi için hangi yanlış koşulun local user binding ve RP session üretimine kadar taşındığını sor; yalnız “JWT geldi” cevabı yeterli değildir.
WEB-15.02 · Red · OIDC, ID token ve SSO ↗Identity sonrası resource policyID token’dan local user elde etmek, o user’ın tenant’ında hangi record’a erişebileceğini açıklamaz. API tarafında access token doğrulaması ve resource authorization ayrı devam eder. Email’i doğrudan account join anahtarı saymak da issuer/subject bağına farklı bir iş kuralını gizlice ekler. Hesap linking, organization membership ve authentication strength, kendi policy ve kanıtlarını ister. Bu derste saldırı yöntemi yerine, geçerli authentication bilgisinin neyi söylemediğine ve yanlış eşitlemenin hangi veri kararını etkilediğine bakıyoruz.
WEB-15.02 · Red · OIDC, ID token ve SSO ↗RP kendi gate ve session’ının sahibidirAtlas B önce issuer, client registration ve kabul edilen algoritmayı configuration’da sabitler; metadata issuer eşleşmesini ve signing-key provenance’i korur. Transaction’da nonce gönderilmiş olması validation planında görünürdür. Gelen ID token’ı sadece decode eden UI yerine server-side doğrulama sonucu local identity binding’e giriş olur. Artifact’te normal, wrong-audience, expiry-equality, nonce-mismatch ve untrusted-key satırları aynı gate conjunction’ını sınar. Signature alanı sadece seçili synthetic sonuçtur; gerçek validator testinin yerine konmaz.
WEB-15.02 · Blue · OIDC, ID token ve SSO ↗OP ve RP session kanıtıKanıt kaydı OP response received, RP validation accepted ve RP session created olaylarını ayırır. A ve B session’larının birbirinden bağımsız kalması hem normal SSO hem OP-expired branch’inde kontrol edilir. UserInfo eklenirse dönen sub’un ID token sub’u ile eşleşmesi gibi o yolun koşulları ayrıca uygulanır; fixture bu endpoint’i çağırmaz. Gerçek OP, JWS library, key rotation, federated logout veya browser third-party-cookie davranışı bu sahnenin tamamlanmasıyla doğrulanmış olmaz.
WEB-15.02 · Blue · OIDC, ID token ve SSO ↗idTokenAuthentication claim alias’ları; stable identity iss/sub çiftidir.
WEB-15.02 · OIDC, ID token ve SSO ↗trustedKeysSeçili issuer metadata ve key provenance, kid’den ayrı.
WEB-15.02 · OIDC, ID token ve SSO ↗validationCasesGates birlikte gerekli; gerçek crypto sonucu değildir.
WEB-15.02 · OIDC, ID token ve SSO ↗sessionsOP, A ve B session sahipliği bağımsızdır.
WEB-15.02 · OIDC, ID token ve SSO ↗tokenRecipientsID token, access token ve local session’ın farklı alıcıları.
WEB-15.02 · OIDC, ID token ve SSO ↗Bir ekran, birden fazla güven kararıMina Atlas sayfasını açtığında browser’ın local session cookie alias’ı olmayabilir. Atlas RP server bir authentication transaction başlatır; seçili issuer, kendi redirect URI’si, S256 PKCE ve browser-bound state/nonce bağlamı hazırlanır. Browser OP authorization endpoint’e yönelir. OP authentication ve grant kararını verir, browser code callback’i izler. Bu sıradaki TLS bağlantıları web origin’lerine transport güveni sağlar; local kullanıcı binding’i veya Notes API izni vermez. Her URL ve redirect aynı socket veya aynı origin içinde gerçekleşmiş sayılmaz.
WEB-15.03 · Core · Modern login yolculuğu ↗Session’dan resource kararınaMina notlarını açınca browser Atlas’a kendi normal application request’ini yapar. Cookie alias’ının gelmesi local session lookup’ın olumlu olduğu anlamına gelmez: server session mevcut mu, invalidated mı, timeout geçti mi ayrı bakar. Geçerli session user bağlamını kurar; downstream Notes API için RP uygun access token’ı kullanır. API token validation, audience, expiry ve notes:read scope’unu denetler, ardından Mina/tenant/object/read policy’sine karar verir. Valid ID token ve geçerli local session bu son policy’nin yerine geçmez.
WEB-15.03 · Core · Modern login yolculuğu ↗Login başarısını gereğinden fazla yorumlamaNormal branch ile foreign-resource branch’inde ID token, session ve access token gate’leri aynı şekilde geçerlidir. Değişen yalnız object policy’dir: Mina seçili başka tenant’ın notuna bağlı değildir. Bu ayrım authorization hatasının koşulunu netleştirir. Kimliğin kabulünü her resource için allow sayan sistemde etki, session sahibinin ne kadar veri veya action’a ulaşabildiğine bağlı olur. Client-side sayfanın açılması, callback’in dönmesi veya API receipt’i bunun tek başına kanıtı değildir.
WEB-15.03 · Red · Modern login yolculuğu ↗Credential saklama sınırıCredential’ın saklandığı yer de flow’un parçasıdır. Bu server-side profil browser’a ID token göstermediği için bütün browser risklerinin bittiğini iddia etmez: session cookie hâlâ application request’lere katılır ve state-changing işlemler kendi request protection’ını ister. HttpOnly script’in cookie okumasını kısıtlar; cookie ile yapılabilen her işlem için authorization garantisi vermez. Trust boundary’nin neyi koruduğunu, credential type ve recipient ile birlikte okumak gerekir.
WEB-15.03 · Red · Modern login yolculuğu ↗Her gate’e bir owner ve kanıt verAtlas transport peer’ini, transaction correlation’ını, OP identity’sini, local session’ını ve API resource policy’sini ayrı kayıtlarla izler. Başarılı login sonrası yeni session identifier seçmek ve eski pre-authentication context’i yükseltilmiş session’a taşımamak session lifecycle tasarımıdır. Secure, HttpOnly ve host-bound cookie kapsamı seçilir; SameSite callback türüyle birlikte değerlendirilir. GET redirect ile POST response aynı cookie davranışı kabul edilmez. Fixture cookie bytes üretmez ve browser’ın bu policy’yi uyguladığını ölçmez.
WEB-15.03 · Blue · Modern login yolculuğu ↗Her gate kendi kanıtını üretirOperasyonel incelemede gerekli kanıtın kaynağı da değişir: RP validation library’si signature sonucu, session store timeout sonucu, API policy engine’i object kararı üretir. Safe correlation ID olayları bağlayabilir; token, code, cookie veya private key log’a taşınmaz. Provider interoperability, key rollover, consent/freshness policy, refresh davranışı ve browser navigation testi için ayrı izole entegrasyon gerekir. Bu dersin tam yol tablosu o testleri planlamaya yardımcı olur; modelin tamamlanması o dış sistemlerde başarı anlamına gelmez.
WEB-15.03 · Blue · Modern login yolculuğu ↗journeyTam yolun her gate’i ayrı owner ve evidence taşır.
WEB-15.03 · Modern login yolculuğu ↗sessionLocal timeout ve cookie policy; token exp ile eşit değildir.
WEB-15.03 · Modern login yolculuğu ↗sessionCasesZero-leeway local session sınırı ve invalidation.
WEB-15.03 · Modern login yolculuğu ↗casesOP state tek başına RP session/API izni üretmez.
WEB-15.03 · Modern login yolculuğu ↗credentialRecipientsCredential type ile hedef validation sahibini ayırır.
WEB-15.03 · Modern login yolculuğu ↗Bir code hangi transaction’a ait?PKCE, authorization code ile onu başlatan client transaction’ı arasında devamlılık kurar. Client her authorization request için yeni, yüksek entropy’li code_verifier üretir; S256 challenge, ASCII verifier’ın SHA-256 sonucunun padding’siz base64url gösterimidir. Authorization request challenge ve method’u taşır; verifier daha sonra TLS token request’inde kullanılır. Challenge bir identity claim değildir ve code bir API access token değildir. AS, method/challenge’ı ürettiği code’a bağlar.
WEB-15.S01 · Core · PKCE, redirect ve identity binding ↗Redirect, state ve nonce aynı alan değildirRegistered redirect, AS response’unun gideceği endpoint’tir. Güncel BCP eşleştirmeyi exact string ister; native app localhost redirect port istisnası bu server-side HTTPS profiline taşınmaz. Aynı host fakat başka path veya ek query, kayıtlı callback ile aynı string değildir. Callback transaction’ı browser-A, selected issuer ve pending state-A ile ilişkilidir. state eşleşmesi yalnız callback correlation’ını anlatır; token signature veya user identity doğrulamasını kendi başına yapmaz.
WEB-15.S01 · Core · PKCE, redirect ve identity binding ↗Doğru identity hangi local account’a bağlanır?Validated OIDC identity’nin stable anahtarı iss ve sub ikilisidir. subject-A başka issuer altında aynı local user sayılmaz; email veya preferred_username eşitliği account linking için yeterli değildir. Önceden kurulmuş mapping ile login, mevcut local account’a yeni external identity eklemekten farklıdır. İkinci işlem sensitive account değişikliğidir: existing account session’ı, yeni identity authentication’ı ve linking transaction bağı birlikte kanıtlanmalıdır.
WEB-15.S01 · Core · PKCE, redirect ve identity binding ↗İlk başarısız gate’in etkisiState-denied branch’inde browser context’i doğru olsa da state-B pending state-A ile eşleşmez; RP normal token request’i başlatmaz. Bu aşamada “AS token’ı reddetti” demek doğru değildir: request hiç AS’ye çizilmez. PKCE-denied branch’i ise callback gate’ini geçer, normal token request AS’ye ulaşır, seçili fixture verifier’ı code challenge’ıyla uyuşmadığından AS error response’u hazırlar. Response arrival ile RP’nin error sonucunu local olarak işlemesi ayrı state’lerdir.
WEB-15.S01 · Red · PKCE, redirect ve identity binding ↗Eşit profile attribute identity değildirEmail-only satırında identity valid kabul edilse bile existing account session’ı ve linking session bağı yoktur; email benzerliğinden link üretilmez. Link-pending, yeni identity’nin kanıtı ile sensitive local değişikliğin onayını ayırır. Boundary bozulursa external identity yanlış local account bağlamında kullanılabilir; hangi record veya tenant’a erişileceği yine application authorization’a bağlıdır. Sorunu token formatına indirgemek doğru owner’ı gizler: local mapping kararı RP’ye aittir ve yeniden doğrulanabilir bir binding policy gerektirir.
WEB-15.S01 · Red · PKCE, redirect ve identity binding ↗Transaction ledger’ını owner ile kurRP pending transaction’da selected issuer, client registration, redirect, user-agent binding, state, nonce ve verifier referansını birlikte saklar; her field’in purpose’u ayrıdır. AS code ledger’ı client, redirect, method/challenge, expiry ve one-use koşulunu bağlar. Callback local gate’inden sonra token endpoint seçimi trusted configuration’dan gelir; gelen callback’in her adresi veya key referansı yeni trust kaynağı yapılmaz. Token receipt, ID validation ve local account mutation olayları ayrı kaydedilir.
WEB-15.S01 · Blue · PKCE, redirect ve identity binding ↗Account link’i ayrı sensitive değişiklik sayExisting identity mapping’i iss/sub üzerinden oku; yeni link için existing account authentication’ını, yeni identity validation’ını ve current linking session bağını tekrar kontrol et. Atlas ayrıca user confirmation ister; link-pending state’inde account store değişmez ve yeni login yetkisi o link üzerinden oluşmaz. Gerekli reauthentication, unlink sonrası access sonlandırma ve user notification lifecycle’ın parçalarıdır. Bu fixture yalnız karar ledger’ını gösterir; notification göndermez, key veya token indirmez ve actual local account store’a yazmaz.
WEB-15.S01 · Blue · PKCE, redirect ve identity binding ↗transactionRP pending transaction’ın browser ve correlation referansları.
WEB-15.S01 · PKCE, redirect ve identity binding ↗publicHashFixtureCredential olmayan fixed ASCII fixture ve S256 sonucu; entropy iddiası yok.
WEB-15.S01 · PKCE, redirect ve identity binding ↗codeAssociationAS’nin code’a bağladığı method/challenge ve diğer context.
WEB-15.S01 · PKCE, redirect ve identity binding ↗accountRowsExisting login, approved link ve no-link ayrı local kararlardır.
WEB-15.S01 · PKCE, redirect ve identity binding ↗Kim konuşur, kim karar verir?SAML federation’da IdP principal’ın authentication sonucunu assertion ile ifade eder; SP bu sonucu kendi local application context’inde değerlendiren relying party’dir. Atlas örneği SP-initiated browser SSO seçer: SP pending request-A üretir, browser request’i registered IdP’ye taşır, IdP response’u browser üzerinden SP’nin ACS endpoint’ine ulaştırır. Browser taşımaya aracılık eder; SP’nin IdP signing trust’ının sahibi olmaz. Local SP session, IdP session’dan ayrı kurulur.
WEB-15.S02 · Core · SAML federation modeline giriş ↗Destination, audience ve recipient farklı bağlarResponse Destination mesajın alındığı ACS location’ıyla eşleşir; bearer Recipient assertion’ın confirmation hedefi ACS URL’sidir. Audience ise SP’nin unique entity identifier’ıdır; ACS URL’siyle aynı olmak zorunda değildir. Response ve bearer InResponseTo selected request-A’ya bağlıdır. SP ayrıca kendi pending request ve browser context’ini korur. Core’daki optional field genel tanımı ile bu SP-initiated selected profile’ın correlation gereksinimini karıştırma; unsolicited akışın ayrı kuralları vardır ve burada kabul edilmez.
WEB-15.S02 · Core · SAML federation modeline giriş ↗İmza hangi business verisini korur?POST profile’ın onaylı E26 errata’sı her assertion’ın digital signature ile korunmasını ister; bunu assertion’ı ayrı imzalayarak veya onu kapsayan Response’u imzalayarak sağlamak mümkündür. Burada individual assertion coverage seçiyoruz. Signature validation’ın trusted IdP key’i, accepted algorithm ve verified node kapsamı bilinmelidir; mesajın içindeki certificate/KeyInfo kendiliğinden trust anchor olmaz. Business identity, gerçekten doğrulanan ve policy’si değerlendirilen node’dan okunmalıdır.
WEB-15.S02 · Core · SAML federation modeline giriş ↗Valid assertion yanlış bağlamda kullanılamazAudience-denied branch’inde response doğru ACS’ye gelir, issuer ve signature fixture’ı doğru kalır, fakat assertion catalog SP’ye yöneliktir. Atlas kendi entity ID’sini audience restriction’da bulamadığı için local session yaratmaz. Bir restriction içindeki Audience’lar OR, farklı restriction grupları AND’dır; hepsini tek büyük allowlist’e dökmek kısıtı değiştirir. Bu, transport veya XML format hatası değil, intended relying party bağının başarısızlığıdır.
WEB-15.S02 · Red · SAML federation modeline giriş ↗Signature sonucu node seçimini örtmezNode-denied branch’i yalnız typed ledger’da verified assertion-A ile business consumer’ın assertion-other referansını ayırır. İçinde XML signing örneği, parser manipulation veya yeniden üretim akışı yoktur. Öğrenilecek varsayım şudur: “bir signature doğrulandı” sonucu hangi issuer/subject/condition node’u için geçerliydi? Key provenance, coverage ve aynı node’un tüketilmesi kaybolursa identity kararı kendi kanıtından kopar. Signed XML integrity sağlar; attribute doğruluğu ve local role policy’si ayrıca değerlendirilir.
WEB-15.S02 · Red · SAML federation modeline giriş ↗Trust configuration mesajdan önce gelirAtlas selected IdP entity ID, SP entity ID, ACS URL ve signing key provenance’ını configuration’da ayırır. Current library algorithm policy’si kullanılır; 2005 standardındaki tarihsel signature algorithm önerilerini güncel deployment default’u diye taşımayız. XML parser/schema/ID uniqueness, signature validation ve business node seçimi reviewed library sınırında birlikte tutulur. Unknown schema veya mesajın taşıdığı yeni key referansı otomatik network trust kaynağı değildir.
WEB-15.S02 · Blue · SAML federation modeline giriş ↗Session creation ile reusable assertion ayırNormal branch’te bütün selected gate’ler geçtikten sonra SP yeni local session oluşturur; request state’i tüketilir ve used assertion ID confirmation validity boyunca tutulur. POST profile bunu bearer reuse kontrolü için ister; storage concurrency ve clock policy gerçek üründe ayrıca doğrulanır. Assertion’ın accept edilmesi SP session’ını sonsuz yapmaz; local session lifetime ve varsa AuthnStatement SessionNotOnOrAfter bağlamı ayrı izlenir.
WEB-15.S02 · Blue · SAML federation modeline giriş ↗profileSP-initiated selected binding ve trust context’leri; XML çalışmaz.
WEB-15.S02 · SAML federation modeline giriş ↗normal.responseResponse ID, Destination ve request correlation.
WEB-15.S02 · SAML federation modeline giriş ↗normal.assertionSubject, audience, Conditions ve bearer confirmation ayrı alanlardır.
WEB-15.S02 · SAML federation modeline giriş ↗normal.signatureDeclared trusted key ve aynı verified/consumed node ilişkisi.
WEB-15.S02 · SAML federation modeline giriş ↗timeRowsUTC öğretim offset’leri; confirmation bitişi hariçtir.
WEB-15.S02 · SAML federation modeline giriş ↗Server rolleri ürün adlarıyla sınırlı değildirWeb server, HTTP request kabul edip uygun response veren rolü anlatır: static content sunabilir veya işi uygulamaya aktarabilir. Application server ise request’i uygulama mantığına bağlayıp sonucu üretir. Bu roller her zaman iki makine, iki process veya iki ayrı ürün gerektirmez. Node http.createServer callback’i sayesinde aynı process hem HTTP server hem uygulamanın çalışma ortamı olabilir. Framework routing ve middleware düzenini sağlar; runtime’ın code execution ve I/O yeteneklerinin yerine geçmez.
WEB-16.01 · Core · Web server, runtime ve execution model ↗Reverse proxy ikinci bir HTTP hop açarReverse proxy client request’ini kabul eder, seçtiği upstream’e kendi request’ini gönderir, upstream response’unu alır ve client’a response verir. Client→edge ile edge→application ayrı exchange’lerdir; aynı socket veya aynı process içindeki function call değildir. Örnekte method, path ve body içeriği korunur. Gerçek proxy ayrıca URI mapping, cache, buffering veya connection policy uygulayabilir; davranış configuration’a bağlıdır.
WEB-16.01 · Core · Web server, runtime ve execution model ↗Async iş CPU paralelliği değildirNode’un varsayılan JavaScript callback’leri tek event-loop thread’inde çalışır. Uygun network I/O işleri kernel’e, bazı filesystem/crypto işlemleri libuv worker pool’a bırakılabilir. Ancak uygulamanın yazdığı uzun JavaScript loop’u kendiliğinden pool’a taşınmaz. async function ilk await’e kadar synchronous code çalıştırır; Promise döndürmek bu bölümün başka CPU’da koşmasını sağlamaz.
WEB-16.01 · Core · Web server, runtime ve execution model ↗Paylaşılan execution kapasitesinin sınırıBir handler’ın synchronous JavaScript işi aynı event-loop callback queue’sunu geciktirebilir. Yanlış varsayım, async keyword’ünün bütün işi nonblocking yaptığı düşüncesidir. Normal bir hesap yeterince büyüdüğünde başka request’lerin ilerlemesini etkileyebilir. Availability etkisi runtime, concurrency ve iş miktarına bağlıdır; bu küçük 10000 terimli örnekten production latency veya kapasite sonucu çıkarılamaz.
WEB-16.01 · Red · Web server, runtime ve execution model ↗Content’i hangi bileşenin ürettiğini ayırStatic response’u application permission kontrolünden geçmiş sonuç saymak, hop ile handler’ın görevlerini karıştırır. Public Static note için edge’in doğrudan response vermesi normaldir. Personalized data’da ise aynı varsayım confidentiality veya stale-result konusunda yanlış sonuca götürebilir. Edge cache/route seçimi application policy uygulayacaksa bu sorumluluk açıkça tanımlanmalıdır. Ürün adı veya edge’den gelen 200 status bu sözleşmenin kanıtı değildir.
WEB-16.01 · Red · Web server, runtime ve execution model ↗Role ve hop akışını çıkarİlk gözlem, dinleyen endpoint ile request’in yönlendirildiği bileşendir. /notes için edge ve application’daki request correlation’ı aranır; /static/note için application request count’unun artmaması beklenir. Client status/body ile edge’in upstream gözlemi farklı telemetry noktalarıdır. Native API event adları gerçek proxy access-log şeması değildir; field mapping kullanılan server ürününe bağlıdır.
WEB-16.01 · Blue · Web server, runtime ve execution model ↗Execution model ile ölçüm sonucunu ayırCPU örneğinde async function giriş/çıkışını, caller continuation’ı ve queued callback sırasını izle. 1..10000 toplamını bağımsız n(n+1)/2 hesabıyla karşılaştır; doğruluk ölçütü “hızlı göründü” değildir. Queue gecikmesini production latency diye yorumlamak için gerçek workload ve zaman ölçümü gerekir. Küçük, sınırlı hesap yalnız async code’un synchronous bölümünü açıklar.
WEB-16.01 · Blue · Web server, runtime ve execution model ↗Execution maliyetini request sınırında yönetAsync sözcüğü CPU maliyetini ortadan kaldırmaz. Request’in kabul edilen boyutunu ve yapılacak işin üst sınırını handler’dan önce belirle; event loop üzerinde süresi belirsiz büyük hesap başlatma. Network ve disk I/O için uygun asynchronous API kullanılırken CPU işi ayrı bir worker havuzuna alınabilir. Havuzun bekleyen iş sayısı, süre sınırı ve hata davranışı da sınırlı olmalıdır; sınırsız worker açmak güvenli bir kapasite politikası değildir.
WEB-16.01 · Blue · Web server, runtime ve execution model ↗rolesHTTP serving, runtime ve framework rolleri aynı ürün veya process olmak zorunda değildir.
WEB-16.01 · Web server, runtime ve execution model ↗proxyExchange / staticExchangeUpstream arrival ile edge’in kendi ürettiği response farklı yollardır.
WEB-16.01 · Web server, runtime ve execution model ↗cpu / memorySınırlı toplam hesabı ve callback sırası, process memory ownership’inden ayrı okunur.
WEB-16.01 · Web server, runtime ve execution model ↗Environment girdisi kendiliğinden typed değildirEnvironment variables process’in başladığı ortama bağlı key/value girdileridir. Node process.env bu process’in environment object’ini sunar; DotEnv ek değerleri text olarak parse eder. "false", "0" veya JSON’a benzeyen text kendiliğinden boolean, number veya object olmaz. Configuration loading, input’un kaynağını ve hangi kuralla typed value’ya dönüştürüleceğini belirlemelidir.
WEB-16.02 · Core · Configuration ve secrets ↗Çalışan process config’i kendi lifecycle’ında tüketirConfiguration startup’ta bir kez okunup frozen object’e dönüştürülebilir. Kaynak cfg-b’ye geçse bile cfg-a snapshot’ını kullanan process kendiliğinden yenilenmez. Bunun nedeni environment’ın sonsuza kadar immutable olması değildir: process.env uygulama içinde değiştirilebilir. Snapshot’ın ne zaman okunacağı ve cached client veya connection’ın nasıl yeniden kurulacağı uygulamanın kararıdır.
WEB-16.02 · Core · Configuration ve secrets ↗Secret delivery, kullanım ve revocation farklıdırSecret, açığa çıkması erişimi veya cryptographic protection’ı etkileyen materyaldir; her configuration field secret değildir. Public theme veya limit ile database credential/private key aynı korunma ihtiyacını taşımaz. Environment injection bir delivery yöntemi olabilir, fakat tek başına secret vault, access control, encryption-at-rest, audit veya rotation kurmaz. Repository, build image, plaintext log ve dump yüzeylerinde secret lifecycle ayrıca korunur.
WEB-16.02 · Core · Configuration ve secrets ↗Text input ile snapshot’ı hazır kabul etme"false" veya "two" string’i beklenen type’a çevrilmeden truthy kabul edilirse mode veya limit kararı yanlış oluşabilir. Yanlış varsayım environment input’unun zaten normalized olduğu düşüncesidir. Etki field’in kullanımına bağlıdır: yanlış readiness, availability veya policy branch seçimi olabilir. Startup validation type kuralını uygulayıp yanlış girdiyi reddeder; bu örneğin 1..10 aralığı bütün servisler için ayar önerisi değildir.
WEB-16.02 · Red · Configuration ve secrets ↗Secret delivery korumanın tamamı değildirEnvironment’a verilen materyali otomatik protected vault saymak access boundary’yi kaybettirir. Consumer rolü, source read access ve kullanım bağlamı değerlendirilir. Bütün config’i plaintext dump veya log’a yazmak secret exposure oluşturabilir; etki secret’ın yetkilerine bağlıdır. Source erişimi least privilege ile sınırlandırılır, value output’tan ayrılır ve secret lifecycle envanterle ilişkilendirilir.
WEB-16.02 · Red · Configuration ve secrets ↗Effective config’i secret sızdırmadan okuStartup input’unu enum, type ve required field kurallarıyla değerlendir. Public/"2" girdisi normalized limit=2’ye, "two" girdisi rejected startup sonucuna gider. Kabul edilen cfg-a revision’ı ile source cfg-b revision’ını ayrı kaydet. Public mode ve limit gözlenebilir; credential value bunlara katılmaz. Eksik field gözlemi otomatik false veya safe default değildir.
WEB-16.02 · Blue · Configuration ve secrets ↗Source ile consumer version’ını ayrı izleSecret source current alias, process consumed alias ve downstream accepted alias aynı field değildir. Audit consumer rolünü, operation sonucunu, version alias’ını ve gözlem zamanını tutar; gizli value yazılmaz. Current=b, process=a, accepted=b akışında rejection eski snapshot ile açıklanır. Bu sonuç yalnız source rotation’dan değil, downstream acceptance koşulundan çıkarılır.
WEB-16.02 · Blue · Configuration ve secrets ↗validationContract / inputÖrneğe verilen string girdiler ve validation kuralları; range eğitim için seçilmiştir.
WEB-16.02 · Configuration ve secrets ↗normalized / snapshotChangeKabul edilen typed state, source revision metadata’sından ayrı tutulur.
WEB-16.02 · Configuration ve secrets ↗secretVersionsCredential içermeyen version referansları ve downstream acceptance koşulları.
WEB-16.02 · Configuration ve secrets ↗Framework request execution’ını düzenlerWeb framework runtime üzerinde request/response handling’i düzenleyen abstractions sağlar: router, middleware composition, handler/controller ve error path gibi. HTTP parsing veya JavaScript execution framework adından türemez. Express’in resmi guide’ı routing/middleware’i request-response cycle içindeki function call dizisi olarak anlatır. Bu dersin küçük manual Node pipeline’ı aynı görev ayrımını gösterir; Express’in bütün matching/error kurallarını uygulamaz.
WEB-16.03 · Core · Routing, middleware ve handler ↗Middleware state üretir veya cycle’ı kapatırMiddleware request context’ini okuyabilir veya değiştirebilir, response hazırlayabilir, error üretebilir ya da next continuation’a geçebilir. Express’te normal middleware cycle’ı bitirmiyorsa next() ile kontrolü ileri vermelidir; ikisini de yapmamak hanging request bırakabilir. Middleware’in mevcut olması bu request’te doğru sırada çalıştığını göstermez. Mount/path, method ve önceki component’in cycle’ı kapatması execution’ı etkiler.
WEB-16.03 · Core · Routing, middleware ve handler ↗Response’ın tek sahibi ve completion sınırlarıHandler/controller input’u uygulama mantığına bağlar, domain sonucu ve representation’ı HTTP response’a dönüştürür. Controller adı database write veya transaction garantisi vermez. Public note handler yalnız Routed note okur; persistence operation yoktur. Stateful action’da commit, response preparation ve client observation aynı event değildir; storage sözleşmesi ayrı uygulanır.
WEB-16.03 · Core · Routing, middleware ve handler ↗Route eşleşmesi permission değildirMethod/path eşleşmesi request’in hangi code’a ulaşacağını seçer; user, tenant veya object authorization’ını kendiliğinden doğrulamaz. Middleware’in mevcut olması da kontrolün o route’ta handler’dan önce çalıştığının kanıtı değildir. Yanlış varsayım routing/presentation context’ini authoritative access decision saymaktır. Personalized operation’daki etki uygulamanın kontrol zincirine bağlıdır; bu dersin public read handler’ı identity kabul etmez.
WEB-16.03 · Red · Routing, middleware ve handler ↗Completion’a taşıdığından fazla anlam yüklemeServer finish event’ini client successful action veya committed transaction diye yorumlamak gözlem sınırını aşar. Normal read için body arrival client tarafında doğrulanabilir; persistence için ayrıca storage result gerekir. Sorun transport/local lifecycle ile business state’i tek success alanına indirmektir. Etki operation’a bağlı stale UI, yanlış confirmation veya error handling karışıklığı olabilir.
WEB-16.03 · Red · Routing, middleware ve handler ↗Route selection ile stage trace’ini ilişkilendirRequestRef ile method, parsed pathname, query view ve seçilen handler’ı ilişkilendir. GET /notes?view=plain için pathname /notes, handler noteRead ve beklenen stage trace kaydedilir. Method mismatch akışında handlerInvoked=false ile 405 ve Allow: GET; route yokluğunda handlerInvoked=false ile 404 ayrı sonuçlardır. Gerçek telemetry field mapping server/framework’e bağlıdır; artifact bir runtime access-log formatı değildir.
WEB-16.03 · Blue · Routing, middleware ve handler ↗Final response ile business sonucunu ayırHandler’ın terminal owner’ını, final status’unu ve body byte sayısını aynı exchange’e bağla. Normal Routed note response’u status=200 ve 11 byte body içerir. Fail route 500/Service unavailable, method mismatch 405/Method not allowed, missing route ise 404/Route not found verir. Error akışının beforeHeaders koşulunu koru; header sonrası stream sonucunu bu örnekten çıkarma.
WEB-16.03 · Blue · Routing, middleware ve handler ↗Pass ve terminal kararını tek akışta uygulaRoute ve middleware sırası yalnız log düzeni değildir: sonraki handler’a geçişi belirler. Gerekli request context hazır olmadan kişiselleştirilmiş handler’ı çalıştırma; access kararı gerekiyorsa bunu handler’dan önce ayrıca tamamla. Middleware ya akışı bitirir ya da açıkça sonraki aşamaya geçirir. Ret veya error sonucu üretildikten sonra normal handler’a devam edilmemeli; ortak response owner ikinci bir tamamlamayı kabul etmemelidir. Express kullanılıyorsa next ve error-handling middleware sözleşmesi izlenir; bu örneğin sade dispatcher’ı Express çalıştırıldığı anlamına gelmez.
WEB-16.03 · Blue · Routing, middleware ve handler ↗routeTable / normalMethod/path selection query’den ayrıdır; local stage sırası ayrıca tanımlanır.
WEB-16.03 · Routing, middleware ve handler ↗methodMismatch / routeAbsentHandler’a ulaşmadan tamamlanan farklı fallback kararları.
WEB-16.03 · Routing, middleware ve handler ↗handlerError / completionHeaders başlamadan verilen kontrollü error ile transport/business completion ayrımı.
WEB-16.03 · Routing, middleware ve handler ↗Controller sonucu taşır; domain kuralı seçerService layer bir use case’in akışını düzenler: uygun data access’i çağırır, domain kuralını uygulatır ve controller’ın tüketebileceği bir sonuç verir. Bu dersin public note kuralı published=true olan kaydın sunulmasıdır. Controller path’i note key’e eşler; repository kaydı okur; domain availability sonucunu belirler. Service ismi burada HTTP microservice veya ayrı process anlamına gelmez. Bütün bu işler seçilmiş örnekte aynı process’in function call’larıdır.
WEB-16.04 · Core · Service layer, business logic ve templates ↗Template data’yı bir interpreter context’ine yerleştirirTemplate, uygulamanın seçtiği trusted çıktı yapısıdır; view model ise bu yapının tükettiği data’dır. Tea & Bread başlığını HTML text context’ine yerleştirdiğimizde üretilen body <h1>Tea & Bread</h1> olur. JSON representation içinde aynı başlık Tea & Bread string’i olarak kalabilir. Bir context’in encoding kararı diğerine körlemesine taşınmaz; HTML text, attribute, URL, JavaScript ve CSS farklı yorumlama kurallarına sahiptir.
WEB-16.04 · Core · Service layer, business logic ve templates ↗Aynı rule’un farklı girişlerdeki ownership’iİncelemenin ilk sorusu hangi controller’ın hangi service/domain sonucunu kullandığıdır. Public catalog’da HTML route published kararını service’den alırken JSON route yalnız repository kaydını serialize ederse aynı availability contract iki yerde farklı uygulanır. Bunun olası etkisi intended presentation sınırının bozulmasıdır; bir HTTP method veya framework adı bu farkı açıklamaz. Kontrol, ortak rule owner ve iki presentation’ın aynı domain sonucuna bağlı olduğunun gösterilmesidir.
WEB-16.04 · Red · Service layer, business logic ve templates ↗Output’u ve tamamlanmayı doğru yorumlamakTea & Bread’in encoded HTML body’si, seçilmiş text slot’u için doğru data transformation gösterir. Aynı dönüşümü bir URL veya script context’ine güvenlik kontrolü diye taşımak anlamı değiştirir. Sorun koşulu context ile encoder’ın uyuşmamasıdır; olası etki yanlış render veya data’nın beklenmeyen yorumlanmasıdır. Savunma context’i sabit tutmak, uygun engine/library kontrolü kullanmak ve raw-output tercihlerinin gerekçesini incelemektir.
WEB-16.04 · Red · Service layer, business logic ve templates ↗Decision ledger’de sınırları ayrı kaydetmekArtifact ledger tea için repositoryFound=true, published=true, serviceOutcome=available ve rendererInvoked=true tutar. draft için repositoryFound=true fakat serviceOutcome=unavailable ve rendererInvoked=false olur; absent kaydı bulunmaz. Bu alanlar uygulamanın gerçek log schema’sı değildir; dersin seçtiği observations’dır. Domain sonucundan status’a mapping’i bağımsız okumak hangi davranışın HTTP policy, hangisinin business rule olduğunu gösterir.
WEB-16.04 · Blue · Service layer, business logic ve templates ↗Selector ve context kontrolünün sınırlarıXPath count(/audit/decision[@outcome="unavailable" and @rendered="true"]) unavailable kararına rağmen renderer’a girilmiş authored observation’ları sayar. Normal fixture 0 verir; deliberately inconsistent positive fixture 1 verir. Normal draft’ın 404 olması beklenen benign sonuçtur. Event hiç yoksa count yine 0 olabilir; bu durumda rule uygulandı sonucu değil, insufficient evidence vardır. Selector yalnız bu kayıt sözleşmesini değerlendirir.
WEB-16.04 · Blue · Service layer, business logic ve templates ↗Business kararını adapter’dan bağımsız tutRepository’nin bir kayıt bulması onu yayınlama izni değildir. Service, published koşulunu ve unavailable sonucunu açıkça hesaplar; JSON ve HTML adapter’ları bu ortak kararın çevresinden dolaşmaz. Renderer yalnız gereken title view model’ini alır, repository nesnesinin bütün alanlarını otomatik dışarı vermez. HTML text için uygun encoder veya engine’in doğrulanmış auto-escaping davranışı kullanılır; JSON serialization aynı HTML güvenlik kontrolü değildir.
WEB-16.04 · Blue · Service layer, business logic ve templates ↗serviceOutcomeRepository result ile HTTP status arasındaki domain kararı.
WEB-16.04 · Service layer, business logic ve templates ↗htmlBodyYalnız sabit HTML text context’inin encoded çıktısı.
WEB-16.04 · Service layer, business logic ve templates ↗completionResult, arrival ve commit’i eşitlemeyen sınır.
WEB-16.04 · Service layer, business logic ve templates ↗URL path’i filesystem path’i değildirStatic file serving, seçilmiş bir public mapping’den uygun dosya bytes’ını HTTP representation olarak döndürmektir. /assets/tea.txt URL path’i örnekte fixtureRoot/tea.txt dosyasına eşlenir; /assets directory’sinin filesystem’de bulunması gerekmez. Express static mount örneği bu virtual prefix ayrımını gösterir. Dosyanın fiziksel dirname’i URL’de görünmeyebilir. Uygulama process’inin bütün filesystem’i public web alanı sayılmaz.
WEB-16.05 · Core · Static files, filesystem ve request processing ↗Request processing bytes ve metadata üretirAkış HTTP method/target’ı almak, URL pathname’i seçmek, public map’i çözmek, gerekli file I/O’yu yapmak ve response policy uygulamaktır. Query view=plain bu örneğin map key’ine dahil değildir; pathname /assets/tea.txt olarak kalır. Gerçek uygulama query’yi başka bir contract’ta kullanabilir. Repository function’ı gibi filesystem read de burada aynı process API’sidir; local read’e sahnede HTTP packet çizilmez.
WEB-16.05 · Core · Static files, filesystem ve request processing ↗Public map sınırını fiziksel dosyadan ayırBenign incelemede önce documented public asset ile server’ın map entry’sini eşleştir. tea.txt’nin varlığı tek başına public exposure kararı değildir; controlled route’un map entry’si ve seçilmiş response birlikte gerekir. Birden çok static root kullanan tasarımlarda lookup order aynı URL için hangi asset’in seçildiğini etkileyebilir. Bu ders fixed map kullanır; arbitrary path veya directory enumerasyonu yapmaz.
WEB-16.05 · Red · Static files, filesystem ve request processing ↗HEAD ve content metadata’nın kapsamıHEAD’de body boş olduğu için dosya boş sonucu çıkarılmaz. Content-Length: 4 seçilmiş GET representation’ın length bilgisidir; HEAD’in taşınan content uzunluğu 0’dır. GET’de Çay alınması da bütün request processing zincirinin güvenlik kontrolünü kanıtlamaz. Bu gözlem yalnız whitelist entry, bytes ve selected response contract’ının ilişkisini gösterir.
WEB-16.05 · Red · Static files, filesystem ve request processing ↗Mapping ve I/O ledger’ini birlikte okuArtifact normal case’te target=/assets/tea.txt?view=plain, pathname=/assets/tea.txt, mapping=tea.txt ve fileContentHex=c3876179 tutar. Bunlar gerçek server’ın hazır telemetry alanları değildir; ilişkiyi görünür yapan synthetic ledger’dır. Normal client octet count 4 ile UTF-8 hesabı eşleşir. HEAD record’unda aynı declaredLength=4 ama receivedContentOctets=0 vardır; bu expected behavior’dır.
WEB-16.05 · Blue · Static files, filesystem ve request processing ↗Missing kayıt ile temiz sonucu eşitlemeXPath count(/audit/asset[@mapping="none" and @reads!="0"]) map bulunmadığı halde read yapılmış authored gözlemleri seçer. Normal missing.txt fixture’i 0, intentionally inconsistent positive fixture’i 1 verir. gone.txt’nin mapping’i bulunduğu için bir read attempt expected benign durumdur; selector onu bu condition’da saymaz. Event yoksa count 0 olsa da bunun anlamı insufficient evidence’dır.
WEB-16.05 · Blue · Static files, filesystem ve request processing ↗Public dosya alanını açıkça seçStatic root bütün proje klasörü olmamalıdır: yalnız yayımlanması amaçlanan asset’lerin bulunduğu dizini seç. Express’te root fiziksel dizini, mount prefix ise public URL alanını belirler; göreli root process’in başlatıldığı dizine bağlıdır. Bu yüzden root’u açık ve kararlı biçimde çözümle, birden fazla root varsa arama sırasını da incele. Örnekte bunun daha dar karşılığı izin verilen map entry’leridir: mapping bulunmadan filesystem read başlatılmaz.
WEB-16.05 · Blue · Static files, filesystem ve request processing ↗mappingSabit URL key’lerinden yalnız fixture path’lerine seçilmiş eşleme.
WEB-16.05 · Static files, filesystem ve request processing ↗declaredLengthGET representation’ın octet sayısı; HEAD content uzunluğu değil.
WEB-16.05 · Static files, filesystem ve request processing ↗readAttemptsUnmapped ve backing-missing iç nedenlerini ayırır.
WEB-16.05 · Static files, filesystem ve request processing ↗Parse sonucu uygulama kararı değildirAtlas public book preview için title ve quantity alır. Normal örnekte title, Cafe ve combining acute karakterinden oluşur; quantity=2 seçilmiştir. JSON parser metni value’lara dönüştürür. Bu işlem quantity’nin izinli aralıkta olduğunu veya caller’ın business action yapabileceğini söylemez. Aynı pipeline’da byte kabulü, parse, schema ve domain kararı ayrı sonuçlar üretir.
WEB-16.S01 · Core · Validation, normalization ve interpretation boundaries ↗Schema ve domain farklı sorular sorarClosed schema yalnız title:string ve quantity:integer alanlarını kabul eder. Eksik alan, null, extra field ve yanlış tür ayrı biçim hatalarıdır. quantity=5 bir integer olduğu için type check’i geçer; ancak Atlas preview kuralı yalnız 1–3 aralığını kabul eder. Numeric string “2” için sessiz coercion yapılmaz; API’nin kabul ettiği representation açık kalır.
WEB-16.S01 · Core · Validation, normalization ve interpretation boundaries ↗Normalization için hangi eşitliği seçtin?Title için NFC seçilmiştir. Cafe + U+0301 ile Café’nin byte ve code point dizileri farklı olabilir; canonical normalization bu iki örneği aynı title’a dönüştürür. Normalization, comparison ve storage için kullanılacak representation’ı belirler. Buradaki uzunluk kuralı, NFC sonrasında 1–40 Unicode code point kabul eder. Byte, grapheme cluster ve ekrandaki glyph sayısı aynı ölçü değildir.
WEB-16.S01 · Core · Validation, normalization ve interpretation boundaries ↗Encoding ve parameterization sink’e aittirPreview, title’ı plain text olarak tüketir. HTML text serialization gerektiğinde o context’e uygun encoding ayrıca seçilir. Tea & Bread için ampersand, HTML text’te entity olarak temsil edilir; domain title ise Tea & Bread olarak kalır. Bu iki representation’ı birbirine karıştırma. HTML text encoding, JavaScript source, URL destination veya SQL query structure için genel bir güvenlik dönüşümü değildir.
WEB-16.S01 · Core · Validation, normalization ve interpretation boundaries ↗Gate başarısızsa yarım record kullanmaArtifact, parsed, schemaValid, domainValid, normalizedTitle ve previewRecord alanlarını ayırır. Yanlış tür için parsed=true olabilirken previewRecord null kalır. Domain limit dalında schemaValid=true ama domainValid=false olur. Extra field sessizce atılıp kabul edilmiş record’a taşınmaz. Bu sonuçlar reddin hangi aşamada verildiğini gösterir; tek bir generic invalid etiketi bu ayrımı kaybettirir.
WEB-16.S01 · Core · Validation, normalization ve interpretation boundaries ↗Valid JSON’dan hangi sonucu çıkarabilirsin?quantity="two" örneğini parse failure diye raporlamak yanlış aşamayı işaretler. Girdi JSON grammar’a uyduğu halde schema’ya uymaz. quantity=5 ise type bakımından uygundur ama operation kuralına uymaz. İncelemede parse success, field/type success ve domain success ayrı tutulmalıdır. Artifact’teki üç dalın farklı sonuçları, reddin hangi kontrol tarafından verildiğini gösterir.
WEB-16.S01 · Red · Validation, normalization ve interpretation boundaries ↗Aynı görünen title aynı byte değildirComposed ve decomposed Café örnekleri, ekrandaki görünüş ile raw equality arasındaki farkı gösterir. NFC, bu iki örneğin comparison representation’ını birleştirir; bütün Unicode string’lerin eşit sayılması anlamına gelmez. Fullwidth A için NFC’nin ayrımı koruması, normalization seçiminin business semantics ile ilgili olduğunu hatırlatır.
WEB-16.S01 · Red · Validation, normalization ve interpretation boundaries ↗Bir accepted representation contract’ı kurPublic preview contract’ı iki alanı, kesin türleri, quantity aralığını ve NFC sonrasındaki title uzunluğunu birlikte tanımlar. Eksik alan, extra field ve null için açık sonuçlar gerekir. Byte limit parse’den önce; type ve domain kuralları parse edilmiş value’lar üzerinde uygulanır. Python’da bool ile int arasındaki inheritance ilişkisi, API’nin quantity type’ını belirlemez: bu profil boolean kabul etmez. Eksik girdiden tahmini bir record üretilmez.
WEB-16.S01 · Blue · Validation, normalization ve interpretation boundaries ↗Sonucu ayrı artifact alanlarından doğrulaNormal girdi için previewRecord Café/2; yanlış tür için schema rejection; quantity=5 için domain rejection; reviewed alanı için closed-shape rejection beklenir. Son üç durumda record null kalır. Parsed type, normalized title ve HTML text representation ayrı alanlardan okunmalıdır. Bir aşamanın başarılı sonucu, diğerinin başarı kanıtı olarak kullanılamaz.
WEB-16.S01 · Blue · Validation, normalization ve interpretation boundaries ↗rawFixed ordinary JSON text; byte admission parse’den ayrıdır.
WEB-16.S01 · Validation, normalization ve interpretation boundaries ↗schemaValid / domainValidFields/types ile operation range ayrı kapılardır.
WEB-16.S01 · Validation, normalization ve interpretation boundaries ↗previewRecordAccepted NFC title ve quantity; rejected branch’te null.
WEB-16.S01 · Validation, normalization ve interpretation boundaries ↗representationsRaw, normalized ve HTML text serialized biçimleri aynı değildir.
WEB-16.S01 · Validation, normalization ve interpretation boundaries ↗Interpreter seçimi input’un işi değildirAtlas book preview’de title, sabit bir programın argument’ı, sabit bir template’in value’su veya sabit bir XML record’un field’ı olabilir. Bu üç görev aynı string üzerinde aynı kuralla yürütülmez. Uygulama operation profile’ını seçer; caller title vererek executable, template source veya XML query expression yazma yetkisi kazanmaz. Önceki validation dersindeki typed record burada bir sonraki interpreter’a nasıl aktarılacağını belirleyen contract’la birleşir.
WEB-16.S02 · Core · Command, template ve XML interpretation boundaries ↗Command argument ile shell programı ayrılırNative check kendi Python executable’ını, sabit child code’u ve title için tek argument’ı bir sequence içinde başlatır. shell=False kullanılır. Child yalnız argument count ve title’ı JSON olarak geri verir; O'Reilly & Tea tek title olarak kalır, argc=1 görülür. Bu gözlem bir shell escape tarifi değildir. Program source ve executable uygulamanın sabitleridir; title bu seçimi değiştirmez.
WEB-16.S02 · Core · Command, template ve XML interpretation boundaries ↗Template source sabit, value ayrı kalırBu örnekte Python string.Template için source <p>$title</p> uygulamada sabittir. Tea & Bread title’ı HTML text context için Tea & Bread olarak serialize edilir, sonra title value’su substitute edilir. Tamamlanan string <p>Tea & Bread</p> olur. Template seçimi ile output encoding farklı sorulardır: biri server’ın hangi presentation programını yorumladığı, diğeri value’nun hedef text context’inde nasıl temsil edildiğidir.
WEB-16.S02 · Core · Command, template ve XML interpretation boundaries ↗XML parse ve domain record iki aşamadırXML örneği, memory stream’den en çok 128 UTF-8 byte ve seçilmiş küçük tree sınırı ile okunur. Kullanılan SAX parser’da external-general ve external-parameter entity feature’ları false seçilir; lexical startDTD callback’i bütün DTD declaration’larını reddeder. Entity resolver dış kaynak açmak yerine isteği reddeder. Bu seçimler yalnız parser adı üzerinden varsayılmaz: native sonuç gözlenen feature değerlerini kaydeder.
WEB-16.S02 · Core · Command, template ve XML interpretation boundaries ↗XML tree, XPath seçimi ve external kaynak farklıdırUygulamanın belirlediği title path’i ElementTree find ile seçilir. Bu library, ElementPath/XPath’in sınırlı bir alt kümesini sunar; native check tam bir XPath engine çalıştırmış sayılmaz. Kullanıcının title value’su selection expression’ına eklenmez. XML document fields’ını doğrulamak, bir query language expression’ının application tarafından sahiplenilmesinden farklı sorumluluktur. Namespace ve başka schema profilleri bu küçük book formatının dışında kalır.
WEB-16.S02 · Core · Command, template ve XML interpretation boundaries ↗Review hangi source’u kimin seçtiğini izlerCommand, template ve XPath review’lerinde aynı soru işe yarar: interpretation source’u hangi güvenilen code seçiyor, hangi alan yalnız data olarak geliyor? Program adı, child source, template source ve sabit title path artifact’te ayrı görünür. Sıradan title’ın eksiksiz korunması value boundary’sine ilişkin kanıttır. Bu kanıt, caller’ın executable veya expression seçebildiğini söylemez.
WEB-16.S02 · Red · Command, template ve XML interpretation boundaries ↗Başarılı interpreter, başarısız consumer olabilirXML wrong-root case’inde parser’ın tamamlanması gözlenen bir olgudur; application’ın book record kabul etmesi başka bir karardır. Execution count=1 ve output null birlikte tutulur. Error’ı yalnız parse error diye adlandırmak gerçek failure boundary’yi kaybettirir. Command case’inde child’ın ürettiği stdout gelmeden result view değişmez; Template case’inde serialized output’a browser render sonucu eklenmez.
WEB-16.S02 · Red · Command, template ve XML interpretation boundaries ↗Profile ve consumer contract’ını birlikte kapatMümkün olan yerde built-in library kullanarak process invocation ihtiyacını azalt. Process gerektiğinde uygulamanın seçtiği executable ve sabit arguments ile başla; text’i shell programı olarak birleştirme. Bu örneğin child’ı yalnız title’ı geri okur. Gerçek bir conversion tool için option/destination policy, privileges ve resource limit ayrıca gerekir. Bunlar başarılı argc=1 sonucu üzerinden doğrulanmış sayılmaz.
WEB-16.S02 · Blue · Command, template ve XML interpretation boundaries ↗Sadece kabul edilmiş çıktı tüketilsinConsumer’a parse edilmiş bütün tree’yi veya tamamlanmamış child state’ini verme. Interpretation tamamlandıktan sonra onaylı record/projection hazırlanır; reddedilen shape için output null kalır. XML case’in parsed display root’u UI’da kabul edilmiş Tea book gibi görünmez. Template mapping’de gerekli value eksikse KeyError gözlenir; eksik verinin otomatik olarak boş bir başarıya dönüşmesi beklenmez.
WEB-16.S02 · Blue · Command, template ve XML interpretation boundaries ↗profilesUygulamanın seçtiği source, config ve consumer contract.
WEB-16.S02 · Command, template ve XML interpretation boundaries ↗executionsTamamlanan child/substitution/parse işlemi; XML shape reddi parse’den sonra olabilir.
WEB-16.S02 · Command, template ve XML interpretation boundaries ↗outputConsumer’ın kabul ettiği çıktı; shape reddedilirse null.
WEB-16.S02 · Command, template ve XML interpretation boundaries ↗missingEksik profile hakkında yorumlama sonucu uydurulmaz.
WEB-16.S02 · Command, template ve XML interpretation boundaries ↗Resource ID, display filename ve storage path farklıdırAtlas text attachment için üç isim tutar. asset-01 resource ID, memo.txt kullanıcıya sunulan display filename, asset-01.dat ise uygulamanın belirlediği storage key’idir. Client’ın gönderdiği filename doğrudan filesystem path yapılmaz. Download handler bir resource ID alır, metadata record’u bulur ve path’i o record üzerinden seçer. İsmin opaque olması authorization yerine geçmez; aynı ID’ye yapılan her read için ilgili policy yine değerlendirilir.
WEB-16.S03 · Core · Paths, upload ve download authorization ↗Canonical path bir permission kararı değildirPython Path.resolve, örneğin kullandığı filesystem’de symlink’leri çözüp absolute bir path üretir. Örneğin public-link.dat, aynı root içindeki asset-01.dat’ye işaret eder; path’teki basename farklıdır, çözümlenen hedef aynı file’dır. İzin verilen root kararı, işlenmemiş string’in başına bakılarak verilmez. Seçilen profil, çözümlenmiş parent’ın tam olarak örneğin root klasörü olmasını ister; bu örnek iç içe klasörleri desteklemez.
WEB-16.S03 · Core · Paths, upload ve download authorization ↗Upload kabulü filename’den fazlasını içerirBu eğitim profilinde yalnız memo.txt veya catalog.txt display seçimi, declared text/plain, 1–16 byte ve strict UTF-8 text kabul edilir. Upload’a örnekte sağlanan context Alice’e izin verir; Bob için write yapılmaz. Beyan edilen image/png ile sıradan Tea byte’ları gönderilen case text-profile kapısında durur. Content-Type bir client beyanıdır; aynı string’i header’a koymak byte’ların gerçekten beklenen formatta olduğunu doğrulamaz.
WEB-16.S03 · Core · Paths, upload ve download authorization ↗Download izni bytes okunmadan verilirDownload branch, örnekte sağlanan principal ile metadata owner arasındaki sınırlı policy’yi file body’sinden önce değerlendirir. Alice asset-01 için kabul edilir, resolved storage root kontrol edilir, sonra Tea bytes okunur. Bob aynı bilinen resource için resource-policy rejection alır: reads=0, body null ve headers null kalır. Başarılı storage lookup ile caller’a body delivery ayrı olgulardır.
WEB-16.S03 · Core · Paths, upload ve download authorization ↗Content-Type ve Content-Disposition farklı işler yaparKabul edilen download için uygulama text/plain; charset=utf-8 media type’ı ve attachment; filename="memo.txt" disposition’ını bir response record’da seçer. Content-Type representation’ın media type’ını belirtir. Content-Disposition attachment, recipient’a default save davranışı önerir; filename tavsiye niteliğindedir, recipient’ın storage path’i veya server’ın resource ID’si değildir. Bir header’ın hazırlanması browser’ın dosyayı gerçekten kaydettiği anlamına gelmez.
WEB-16.S03 · Core · Paths, upload ve download authorization ↗Bir operation’ın kanıtı dört ayrı aşamada tutulurIntent, policy, storage I/O ve consumer sonucu artifact’te ayrı alanlardır. Upload success writes=1 ve storedId üretir fakat download body üretmez. Download success reads=1 ve body Tea üretir fakat file mutation yapmaz. Media mismatch ve denied read için I/O count=0 kalır. Consumer sonucu sadece tamamlanmış ve onaylanmış operation’dan sonra değişir; önceki başarı yeni rejection’ın üstünü örtmez.
WEB-16.S03 · Core · Paths, upload ve download authorization ↗Metadata mapping ile erişim kararını birlikte inceleFile review’de client’ın hangi isimleri etkileyebildiğini ve backend’in hangi isimleri kendisinin seçtiğini açıkça ayır. Display filename, resource ID ve işlemde kullanılan storage key artifact’te farklıdır. Bir UI link’inin memo.txt demesi onun disk path’i olduğunu kanıtlamaz. Aynı şekilde asset ID’nin zor tahmin edilmesi owner/resource policy’nin yerini tutmaz; read kararını her request bağlamında düşünmek gerekir.
WEB-16.S03 · Red · Paths, upload ve download authorization ↗Sıradan bir hata, format güvenliğini sertifikalamazDeclared media mismatch, upload kabul kapısının devreye girdiğini gösterir. text/plain beyanının doğru olması ise genel content safety kanıtı değildir; seçilmiş bytes strict UTF-8 olarak ayrıca decode edilir. Bu file profile HTML, PDF, archive veya media processing pipeline değildir. String’lerin başka interpreter’a aktarılması önceki interpretation ve sonraki isolation derslerinin ayrı sınırıdır.
WEB-16.S03 · Red · Paths, upload ve download authorization ↗Storage key’i uygulama üretsin, policy read’den önce çalışsınClient filename’i storage identifier olarak yeniden kullanmak yerine uygulamanın onaylı key mapping’ini kullan. Bu örnekte üretilen sabit asset-02 key’i mevcut asset-01’den ayrıdır; exclusive creation mevcut bytes’ın overwrite edilmesini engeller. Download’da metadata owner kararı bytes okunmadan yapılır. Root check de policy’den ayrı bir storage responsibility’dir; başarılı authz yanlış mapping’i meşru hale getirmez.
WEB-16.S03 · Blue · Paths, upload ve download authorization ↗Header ve format politikasını regression’a dahil etDeclared upload type’ını byte formatına ilişkin tek kanıt sayma. İzinli formatın content validation’ını, byte budget’ını ve storage naming’ini birlikte kaydet. Download metadata’sı doğru media type ve güvenli, onaylı display name seçmelidir; recipient filename’i storage path gibi güvenilir bir talimat saymamalıdır. attachment davranışı authz yerine geçmez. Buradaki header check bir browser save veya general serializer testi değildir.
WEB-16.S03 · Blue · Paths, upload ve download authorization ↗seed / inputsÖrneğe ait sıradan text ve sağlanan identity alias’ları; opaque ID/path/display ayrı tutulur.
WEB-16.S03 · Paths, upload ve download authorization ↗reads / writesİşlemin I/O sayacı; kanıtı kontrol etmek için yapılan okumalar ayrı tutulur.
WEB-16.S03 · Paths, upload ve download authorization ↗storedId / bodyUpload metadata’sı ile tamamlanmış download teslimi aynı değildir.
WEB-16.S03 · Paths, upload ve download authorization ↗headersOnaylı local response record; HTTP/browser çalıştırıldığını göstermez.
WEB-16.S03 · Paths, upload ve download authorization ↗Upload kabulü processing izni değildirBir attachment’ın storage’a alınması, onun bütün parser ve converter’lara verilebileceğini söylemez. Atlas bu derste seçilmiş iki profil kullanır: kendi küçük ZIP’inden public catalog text record’ları çıkarmak ve kendi dar P6 profiline ait görüntü byte’larını sınırlı bir worker’da okumak. Processing profili, input formatı, işlem sınırı ve consumer’a verilecek çıktı uygulama tarafından ayrı seçilir. Kullanıcının verdiği filename, decoder’ı veya archive extraction hedefini belirlemez.
WEB-16.S04 · Core · Archives ve media processing isolation ↗Compressed bytes, expanded bytes ve entry sayısı ayrı budget’tırÖrnekteki ZIP 226 byte’dır. Member’ların açılmış boyutları 3 ve 5 byte, toplam 8 byte’dır. Arşiv profili en çok 1024 input byte, tam iki onaylı member adı, DEFLATE yöntemi ve 16 byte expanded budget kabul eder. Budget 7 seçildiğinde bildirilen toplam 8 byte bu sınırı aşar; decompression başlamadan ret verilir. decompressedMembers=0, expandedBytes=0 ve output null kalır. Küçük input, açılmış boyuta ilişkin policy’nin yerine geçmez.
WEB-16.S04 · Core · Archives ve media processing isolation ↗Archive member adı filesystem destination olmazBu model extractall veya arbitrary directory extraction kullanmaz. Seçilen member’lar memory stream’den okunur ve uygulamanın belirlediği record-1 / record-2 ID’lerine map edilir. catalog.txt ve notes.txt archive metadata’sıdır; bunlar output filesystem path’i olarak birleştirilmez. Sıradan draft.txt adı seçilen manifest’e uymaz ve hiçbir member decompress edilmeden reddedilir. Path containment için önceki dersin storage naming/root boundary’si ayrı sorumluluktur.
WEB-16.S04 · Core · Archives ve media processing isolation ↗Media bytes, dimensions ve raster ayrı okunurWorker yalnız dar bir P6 profili kabul eder: P6 newline, width height newline, 255 newline ve RGB channel raster. Normal girdi 14 byte’dır; width=1 ve height=1 için raster tam 3 byte olmalıdır. Channel değerleri 15, 118, 110 olarak döner. Bu sonuç color calibration veya browser render ölçümü değildir. Netpbm PPM’in comments, multiple images, diğer Maxval ve varyantlarını kabul eden tam bir decoder burada yoktur.
WEB-16.S04 · Core · Archives ve media processing isolation ↗Process ayrımı isolation kanıtı değildirMedia processing ayrı bir Python child process’te gerçekleşir. Child PID, parent PID’den farklıdır. Uygulama sabit worker code’unu argument sequence ile başlatır; shell kullanmaz ve timeout=5 seçer. Python -I, interpreter’ın import/environment davranışını daraltır. Ayrı process veya bu seçenek tek başına OS sandbox, network ya da filesystem privilege boundary oluşturmaz.
WEB-16.S04 · Core · Archives ve media processing isolation ↗Publish gate tamamlanmış record’a bakarArchive output’u doğrulanmış iki public record, media output’u tamamlanmış pixel listesi olur. Worker’ın başlaması, header’ın okunması veya bir member’ın açılması başarıyla yayımlanmış output değildir. Scene work snapshot’ı ile Result consumer’ın snapshot’ı bu yüzden ayrı tutulur. Archive budget rejection herhangi bir expansion yapmaz; media incomplete case parsed dimensions gösterir ama consumer’a pixels vermez.
WEB-16.S04 · Core · Archives ve media processing isolation ↗Review byte’ların hangi yetkiyle yorumlandığını sorarProcessing review, upload’un hangi extension’ı taşıdığıyla bitmez. Format admission sonrası hangi decoder, hangi resource budget ve hangi output contract seçiliyor? Archive metadata’sından filesystem path veya media name’den external delegate türetilmesi başka bir interpretation boundary açar. Bu örnekte seçilen paths/source sabittir ve işlemler örneğe ait sıradan byte’lar üzerinde yürütülür.
WEB-16.S04 · Red · Archives ve media processing isolation ↗Worker adı bir trust sınırı icat etmezChild PID’nin farklı olması process ayrımını kanıtlar. Child’ın memory, disk, network veya kernel privileges için ayrıca uygulanan bir sınır bulunduğunu kanıtlamaz. Python -I da bu sorumlulukları karşılamaz. Gerçek isolation incelemesinde gözlenen enforcement, izin verilen format/delegate kümesi ve publish gate için ayrı kanıt aranır; çalışan tek bir örnek bütün decoder ailesine genellenmez.
WEB-16.S04 · Red · Archives ve media processing isolation ↗Admission, work ve publish ayrı kapılar olsunArchive entry count, compressed input, advertised expanded size ve işlemde üretilen byte’lar ayrı ölçülmeli. Seçilen manifest’i doğruladıktan sonra bounded stream read ve domain validation yapılır. Output storage için uygulamanın belirlediği isim seçilir; bu örnek memory record projection kullanır. Genel extraction policy’si eklenirse onun path/permissions/cleanup sorumluluğu ayrıca tasarlanmalıdır.
WEB-16.S04 · Blue · Archives ve media processing isolation ↗Eksik çıktı consumer’a geçmesinBaşarı koşulu yalnız process exit veya parse edilmiş header değildir. Archive’de kabul edilen bütün text record’ları, media’da beklenen raster verisi eksiksiz olmalıdır. Native checks, output null üreten dalları bağımsız beklenen sonuçlarla karşılaştırır. İkinci member’daki hata daha önce hazırlanmış record’u yayımlamaz; raster-length hatasında dimensions bilinse bile pixels teslim edilmez. Model durumu bu hata sınırını motion kapalıyken de gösterir.
WEB-16.S04 · Blue · Archives ve media processing isolation ↗profilesSeçilen format, boyut ve consumer contract; genel amaçlı decoder değildir.
WEB-16.S04 · Archives ve media processing isolation ↗decompressedMembers / expandedBytesHeader’da bildirilen değerlerden ayrı, tamamlanmış ve sınırlandırılmış işlem.
WEB-16.S04 · Archives ve media processing isolation ↗dimensions / pixelsDimensions alanının parse edilmesi, geçerli raster’ın teslim edildiği anlamına gelmez.
WEB-16.S04 · Archives ve media processing isolation ↗outputPublish gate yalnız tamamlanmış ve onaylanmış record’ları/pixel verisini kabul eder.
WEB-16.S04 · Archives ve media processing isolation ↗Invariant, transition ve authorityBusiness invariant, her kabul edilmiş operation’dan sonra doğru kalması gereken domain koşuludur. Tek kopyalık catalog’da remaining capacity negatif olmaz; bir copy aynı anda iki aktif reservation sahibi olmaz; completed command ikinci effect üretmez. Workflow state machine bu koşulları state, action ve guard üzerinden ifade eder. available -> reserved geçişi yalnız current permission, quantity, capacity ve revision kontrolünden sonra kabul edilir.
WEB-16.S05 · Core · Business invariants ve workflow state machines ↗Revision ve idempotency farklı sorunları çözerRevision 7, bu command’ın hangi state üzerinde karar vermek istediğini belirtir. Conditional update current revision 7 ve state available iken tek satır değiştirir; affected row sayısı sıfırsa eski karar write üretmez. Guard ile write aynı transaction sınırındadır. Başarılı commit revision’ı 8 yapar ve receipt’i kaydeder. SQLite local fixture sırayla çalışır; parallel request, bütün isolation modları veya distributed lock davranışı sınanmaz.
WEB-16.S05 · Core · Business invariants ve workflow state machines ↗Invite, booking, coupon ve recovery karşılaştırmasıInvite belirli recipient ile workspace’e bağlı pending ve unexpired state ister. Booking current capacity ve authorized reserver ile available state’i tüketir. Coupon eligibility, approved terms, kalan kullanım ve validity period ister; client’ın istediği benefit tek başına server koşulu değildir. Recovery farklı purpose taşır: account-bound verified evidence, unexpired ve unused transaction gerekir. Normal login role’u recovery proof yerine geçirilmez.
WEB-16.S05 · Core · Business invariants ve workflow state machines ↗Bozulan varsayım: doğru sıra domain izni verirRed perspective bir akışın ekran sırasını izlemeyi authorization kanıtı saymaz. Available sayfasını görmüş olmak current reservation state’i veya actor permission’ı kanıtlamaz. Permission-missing satırında evidence null’dır; yanlış olduğu söylenmez ama write için gereken olumlu kanıt yoktur. Command store’a dispatch edilmeden ret hazır olur; receipt ve public result body yoktur.
WEB-16.S05 · Red · Business invariants ve workflow state machines ↗Bozulan varsayım: effect denendi, başarı tamamlandıEffect-failed satırında local transaction kontrollü bir failure nedeniyle açık rollback yapar. Receipt yalnız commit’den sonra dönmelidir; başarısız attempt bir reserved body üretmez. Bu fixture’da rollback sonucu bilinir. External result absent kavramsal satırında ise commitEvidence null’dır; response kaybından “kesin write olmadı” sonucu çıkarılmaz. Local transaction başka servisin effect’ini atomik yapmaz.
WEB-16.S05 · Red · Business invariants ve workflow state machines ↗Guard ve commit için tek local transactionBlue implementation fake catalog row’u current revision ve available state koşuluyla değiştirir. Affected rows tam bir ise revision artırılır ve command receipt aynı transaction’da kaydedilir. Bir local failure branch açık rollback ile hem state update’i hem receipt insert’ini geri alır. SQLite’de hata otomatik olarak bütün transaction’ı her zaman geri alır varsayımına dayanılmaz; rollback kararı ve sonuç ayrıca gözlenir.
WEB-16.S05 · Blue · Business invariants ve workflow state machines ↗Invariant’i outcome üzerinden sınamakBaşlangıç row’u available ve revision=7 durumundadır. Normal reserve, tek committed effect ile reserved ve revision=8 üretir. Aynı retained command tekrar değerlendirildiğinde effect sayısı bir kalır. Stale revision, eksik permission ve geri alınan başarısız operation için başlangıç row’u korunur, yeni receipt oluşmaz. Önceden başarılı command’a rağmen güncel permission reddedilmişse cached body dönmemelidir.
WEB-16.S05 · Blue · Business invariants ve workflow state machines ↗profileFake copy, authoritative priceUnits, revision ve command kapsamı.
WEB-16.S05 · Business invariants ve workflow state machines ↗rowsCurrent permission/revision/effect evidence ve committed state/receipt sonucu.
WEB-16.S05 · Business invariants ve workflow state machines ↗transitionTableGuarded state transition ve retained-command receipt ayrımı.
WEB-16.S05 · Business invariants ve workflow state machines ↗authorityLedgerPrice/role/state için server-owned authority kaynakları.
WEB-16.S05 · Business invariants ve workflow state machines ↗idempotencyLedgerBound command retry’da tek effect ve current authorization şartı.
WEB-16.S05 · Business invariants ve workflow state machines ↗flowFamiliesInvite/booking/coupon/recovery için purpose-specific guards.
WEB-16.S05 · Business invariants ve workflow state machines ↗failureLedgerPre-dispatch ret, bilinen rollback ve unknown external commit ayrımı.
WEB-16.S05 · Business invariants ve workflow state machines ↗boundariesKey possession, local transaction ve sequential testin kanıt sınırları.
WEB-16.S05 · Business invariants ve workflow state machines ↗API bir interaction contract’ıdırAPI bir component’in diğer component’e sunduğu operation/data contract’ını anlatır; her API web üzerinden çalışmaz. Web API bu interaction’ı web protocol üzerinden erişilebilir kılar. Atlas GET /api/notes/tea endpoint’i method ve target’ın birlikte seçtiği read operation’dır. URL’nin sonuna api yazmak veya response’u JSON yapmak kendiliğinden contract’ın tamamını açıklamaz. İzin verilen method’lar, headers, representation shape ve error anlamları da okunmalıdır.
WEB-17.01 · Core · API contracts, endpoints ve REST ↗REST constraints, representation ve hypermediaREST Fielding’in tanımladığı architecture style’dır: client-server, stateless interaction, cache constraints, uniform interface ve layered system birlikte düşünülür; code-on-demand optional’dır. Uniform interface resource identification, representation ile manipulation, self-descriptive messages ve hypermedia’nın application state’i yönlendirmesini kapsar. Yalnız JSON ve CRUD benzerliği bu constraints’in hepsini karşıladığını göstermez.
WEB-17.01 · Core · API contracts, endpoints ve REST ↗Contract ile observed result’i karşılaştırControlled public endpoint’in contract’ını method/target, selected media type, status ve schema üzerinden oku. /api/notes/tea için JSON id alanının number olması parse success’e rağmen contract uyuşmazlığıdır. Bu supplied benign candidate’ı client predicate’i değerlendirir; production server’dan bozuk protocol veya saldırı response’u üretilmez. Olası etki yanlış application branch’i veya typed client’ın result’i kullanamamasıdır. Kontrol, transport success ile application contract validation’ı ayrı tutmaktır.
WEB-17.01 · Red · API contracts, endpoints ve REST ↗REST etiketi ve state bağımlılığıREST adı verilmiş bir JSON API’yi incelerken “resource URL var mı” sorusu yeterli değildir. Request’in anlamı önceki client interaction’ına bağlı server context gerektiriyorsa strict stateless constraint değerlendirmesi farklıdır. Bu durum tek başına bir vulnerability veya kullanılamaz ürün değildir; architecture iddiası ile actual behavior arasındaki farktır. Domain data’nın database’de bulunması aynı session dependency anlamına gelmez.
WEB-17.01 · Red · API contracts, endpoints ve REST ↗Contract ledger ve independent predicatesArtifact contract method’ları GET/HEAD, resource target’ı /api/notes/tea, supported media types’ı JSON/plain ve required JSON fields’ı id/title/links olarak kaydeder. Normal record status=200, media=application/json, schemaValid=true olur. Client predicate id/title string ve links array koşullarını ayrı hesaplar. Benign id=7 candidate’ı rejected olur; bu record yalnız local schema observation’dır, gerçek gateway log schema’sı değildir.
WEB-17.01 · Blue · API contracts, endpoints ve REST ↗Schema selector ve hypermedia kanıtıXPath count(/audit/response[@status="200" and @media="application/json" and @schema="invalid"]) successful HTTP response’un invalid application shape ile eşleştiği authored observation’ları sayar. Normal valid fixture 0, supplied positive fixture 1 verir. 406 veya expected 405 bu schema condition’ına girmez; onlar ayrı contract branch’leridir. Observation yoksa count 0 clean behavior kanıtı değildir; yeterli response ve validation verisi yoktur.
WEB-17.01 · Blue · API contracts, endpoints ve REST ↗Operation ve representation sözleşmesini uygulaServer desteklediği method ve media type’ları dispatch kararına bağlar; yalnız dokümana yazmak yetmez. Bu read contract’ında GET ve HEAD, business mutation başlatmaz; POST seçilen operation’a girmez. Safe method, herkesin her kaynağı okuyabileceği anlamına gelmez: private kaynağa geçildiğinde identity ve permission kararı ayrıca gerekir. JSON response’un Content-Type’ı gerçek serialization ile uyuşmalı, client ise id/title/links tiplerini kullanmadan önce doğrulamalıdır.
WEB-17.01 · Blue · API contracts, endpoints ve REST ↗contractMethod/target/media/schema ve supported operation’ın birlikte tanımı.
WEB-17.01 · API contracts, endpoints ve REST ↗invalidCandidateBenign supplied local schema counterexample; wire response değil.
WEB-17.01 · API contracts, endpoints ve REST ↗hypermediaEntry relation’dan seçilen target; full REST conformity iddiası yok.
WEB-17.01 · API contracts, endpoints ve REST ↗JSON bir değer modeli taşırAtlas kitap listesi önce uygulamada bir object’tir, sonra UTF-8 JSON text olarak serialize edilir; karşı uç text’i parse ederek yeni bir değer ağacı oluşturur. Bu iki object aynı bellek nesnesi değildir. JSON object alanları anlamsal olarak sıralı değildir; array sırası ise anlam taşır. Top-level yalnız object olmak zorunda değildir. String, number, boolean ve null farklı türlerdir: "2" ile 2 aynı schema sonucunu vermez. Date, class metodu veya database bağlantısı JSON’un değer türlerinden değildir.
WEB-17.02 · Core · Schemas, serialization ve API evolution ↗Schema hangi soruyu cevaplar?Request schema pageSize’ın integer ve 1–3 arasında olduğunu, cursor’ın optional string olduğunu söyler. Response schema books array’inin id ve title gerektirdiğini tanımlar. Bunlar parsing’den sonraki structural kontrollerdir; kullanıcı hangi tenant’ın kitabını okuyabilir sorusu burada çözülmez. JSON Schema’da properties yazmak o alanı required yapmaz; additionalProperties varsayılanı da otomatik kapalı değildir. Fixture’ın request’i unknown alanı reddeder, response okuyucusu unknown alanı korur. Bu iki yönde aynı reject kuralını kullanmak şart değildir.
WEB-17.02 · Core · Schemas, serialization ve API evolution ↗Evolution ile pagination birlikte düşünülürv1 title:string alanını koruyarak v1.1 response’a subtitle eklemek, unknown response alanını koruyan reader için uyumludur. Aynı v1’de title’ı heading olarak yeniden adlandırmak remove-and-add etkisidir; eski reader’ın title beklentisi kırılır. Bu fixture’ın major version’ı URI ile seçilir; bu bir ürün kararıdır, HTTP bütün API’leri bu yönteme zorlamaz. Uyumluluk yalnız JSON’un parse olması değildir: eski client derleniyor mu, wire türü aynı mı, eski kullanıcı aynı iş anlamını görüyor mu diye üç ayrı soru sorulur.
WEB-17.02 · Core · Schemas, serialization ve API evolution ↗Format kabulünden yanlış sonuç çıkarmakBir request parse edildiğinde yalnız text’in seçilen parser tarafından okunabildiği öğrenilir. Schema geçtiğinde pageSize ve cursor şeklinin kabul edildiği öğrenilir. Bu iki olumlu sonuç tenant bağını, subject’in read action’ını veya cursor’ın hâlâ geçerli snapshot’a ait olduğunu kanıtlamaz. Riskli varsayım, bütün yeşil kutuları tek bir "valid request" etiketine sıkıştırmaktır. Artifact bu nedenle parse, schema, continuation ve business permission sonuçlarını ayrı ledger alanları olarak tutar; reddin hangi aşamada olduğunu reader görebilir.
WEB-17.02 · Red · Schemas, serialization ve API evolution ↗Küçük değişiklik büyük iş anlamını bozabilirEski client boş books gördüğünde bütün arşivin boş olduğunu düşünüyorsa sonradan pagination eklemek yalnız yeni field eklemek değildir. Kullanıcı ilk sayfayı görüp eksik listeyi tam sanabilir. Title’ın türünü string’den object’e çevirmek de JSON geçerli kaldığı hâlde eski UI’ı bozar. Compatibility tablosunda bu yüzden required isim, wire türü, alan korunumu ve collection’ın tamamlandığı bilgisi ayrı değerlendirilir; hangi eski beklentinin kırıldığı açıkça gösterilir.
WEB-17.02 · Red · Schemas, serialization ve API evolution ↗Üretici ve reader policy’sini birlikte yazHer field için isim, wire type, required/optional, null kabulü, default ve unknown-field policy yazılır. Producer title’ı hâlâ üretirken reader subtitle’ı tanımadan koruyabilir; bu round-trip contract açıkça test edilir. Request’te closed schema tercih edildiğinde bilinmeyen alan için anlaşılır hata dönülür; normalize ederken sessiz silme default değildir. Number domain’i, string boyutu ve collection limit’i parser sınırlarıyla birlikte belirlenir; JSON’un number grammar’ı business ölçü birimini veya hassasiyeti kendiliğinden garanti etmez.
WEB-17.02 · Blue · Schemas, serialization ve API evolution ↗Sayfanın sınırı ile iznin sınırını ayırPagination contract’ında default/max page size, sıralama tie-breaker’ı, nextCursor bitiş anlamı ve cursor’a bağlı filter/order açıklanır. Seçtiğimiz fixture in-memory sabit snapshot’tır; tenant filter pagination’dan önce uygulanır ve cursor-A sadece ikinci sayfanın başlangıcını seçer. Aynı continuation ile filter değişirse listeden tahminî yeni sayfa üretmek yerine bağ uyuşmazlığı açık hata olur. Token expiry ve snapshot kaybı client’a yeniden başlama davranışıyla anlatılır; gerçek storage implementation burada verilmiş sayılmaz.
WEB-17.02 · Blue · Schemas, serialization ve API evolution ↗requestSchemaSeçilmiş closed request kuralları; bütün validator değil.
WEB-17.02 · Schemas, serialization ve API evolution ↗bookSchemaCurrent producer’ın book schema’sı; subtitle string veya null olabilir.
WEB-17.02 · Schemas, serialization ve API evolution ↗pagesTenant filtresi sonrası sabit snapshot’ın iki sayfası.
WEB-17.02 · Schemas, serialization ve API evolution ↗compatibilityRowsAlan ekleme, rename ve null için eski reader beklentisi.
WEB-17.02 · Schemas, serialization ve API evolution ↗cursorLedgerOpaque alias’ın local snapshot/filter/order continuation bağı.
WEB-17.02 · Schemas, serialization ve API evolution ↗oldReaderSchemaEski reader yalnız id/title bilir; unknown subtitle’ı yorumlamadan korur.
WEB-17.02 · Schemas, serialization ve API evolution ↗Selection set bir iş akışı değildirGraphQL client’a typed schema içinden hangi response alanlarını istediğini söyleme yolu verir. Atlas örneği Query.book(id: ID!): Book ile id/title/subtitle seçer. Schema API’nin field ve type sözleşmesidir; database şemasıyla birebir eşleşmek zorunda değildir. Query read sonucunu, mutation üst seviye değişiklik işlemini, subscription ise source event’lere bağlı response stream’ini tarif eder. Bu derste yalnız ordinary read query yürütülür; subscription’ın transport’u veya mutation transaction’ı bu animasyonun kapsamı değildir.
WEB-17.03 · Core · GraphQL execution model ↗Resolver sonucundan typed response’aResolver parent value, field arguments ve server’ın kurduğu context ile field sonucunu üretir. Atlas context’i declared session/tenant permission taşır ve book-A sabit local kayıttan okunur. Resolver çağrısı otomatik olarak HTTP request değildir; in-memory lookup için sahnede local işlem kullanılır. Field completion returned value’yu schema type’ına göre tamamlar: nested object’in seçili alanlarını yürütür veya scalar output coercion yapar. Runtime’daki her object alanını response’a kopyalamak selection set’i yürütmek değildir.
WEB-17.03 · Core · GraphQL execution model ↗Execution sonucu ile HTTP sonucu ayrılırParse/validation/input coercion nedeniyle başlamayan execution, errors içeren ama data alanı olmayan request error result verir. Başlamış execution’ın field hatası data ile errors’u birlikte verebilir; data:null ile data alanının hiç bulunmaması aynı değildir. Browser network başarısı veya HTTP status tek başına bütün seçili field’ların başarılı olduğunu kanıtlamaz. UI book objesinin varlığını ve error path’lerini birlikte okuyarak title gösterip subtitle için yerel hata durumu seçebilir; internal exception text’i kullanıcıya olduğu gibi dökmek gerekmez.
WEB-17.03 · Core · GraphQL execution model ↗Schema görünürse resource izinli mi?Schema’da book field’i olması yalnız field’in API sözleşmesinde bulunduğunu gösterir. ID variable’ının kabulü, authenticated connection veya selection validation subject’in o resource’u okuyabildiğini söylemez. Authorization, server’ın güvenilir context’inden object/action kararıyla resolver veya onun çağırdığı service sınırında uygulanır. Riskli varsayım root resolver’ın genel bir allow kararının bütün nested field’lara yetmesidir. Daha hassas author/profile alanı eklendiğinde kendi field/resource policy’si gerekebilir; public schema bir permission listesi değildir.
WEB-17.03 · Red · GraphQL execution model ↗Partial sonucu tam başarı sanmaksubtitle hatası response’a taşınırken title başarıyla dönebilir. Bütün errors’u global failure’a dönüştürmek kullanılabilir bilgiyi gereksizce kaybettirir; yalnız data var diye errors’u yok saymak da yanlış subtitle göstermeye neden olabilir. Non-null değişikliğinin blast radius’u önemlidir: optional bilgiyi gereksizce non-null yapmak küçük resolver hatasında bütün Book görünümünü boşaltabilir. Artifact aynı normal kaydın iki field-error sonucunu yan yana koyar; fark network hızı değil schema’daki nullability zinciridir.
WEB-17.03 · Red · GraphQL execution model ↗Pipeline’ın kararlarını ayrı gözleSchema edition ve operation contract pin edilir; parse, validation, variable coercion, resolver invocation ve completion outcome ayrı kaydedilir. Sensitive value veya bütün query text’i log’a koymadan operation alias, correlation ID ve sınırlı error path yeterli olabilir. Unknown field branch’ında no-execution kanıtı resolver count=0’dır. Normal branch’ta count ve response selection eşleşir. Buradaki count local fixture ledger’ıdır; production engine instrumentation, distributed trace veya query planner performansı olarak sunulmaz. Artifact count’u bütün seçili field outcome’larının completion’dan önce hazır olduğu profile aittir; gerçek executor pending sibling işini iptal edebilir.
WEB-17.03 · Blue · GraphQL execution model ↗Client rendering’i nullability’ye bağlaRegression aynı book için dört ordinary outcome tutar: full result, validation-before-execution denial, nullable subtitle failure ve non-null title propagation. Client absent data’yı data:null’dan ayırır; non-null title branch’ında eski title değerini yeni book response’u gibi göstermemelidir. Partial subtitle branch’ında title kullanılabilir ama subtitle error state’i açık kalır. Error path değiştiğinde UI mapping’i alias-aware test edilir; human-readable message sürekli identifier olarak kullanılmaz.
WEB-17.03 · Blue · GraphQL execution model ↗schemaSDLSeçilmiş query schema ve nullable Book/subtitle zinciri.
WEB-17.03 · GraphQL execution model ↗rowsAynı kaydın dört outcome’u; GraphQL engine çalıştırıldığı iddia edilmez.
WEB-17.03 · GraphQL execution model ↗typesField error’ın hangi nullable ancestor’da durduğu.
WEB-17.03 · GraphQL execution model ↗contextPermission sonucu declared; client variable ile trusted context farklı.
WEB-17.03 · GraphQL execution model ↗httpScopeReleased core ile değişebilir HTTP draft/profile sınırı.
WEB-17.03 · GraphQL execution model ↗WebSocket message, frame ve permissionWebSocket uzun ömürlü, iki yönlü bir message kanalıdır; Browser ile server birbirinden bağımsız application message gönderebilir. HTTP/1.1 profile opening handshake’ı GET/Upgrade ve başarılı 101 ile kurar. HTTP/2’de RFC 8441 desteği negotiate edilmişse extended CONNECT ve :protocol=websocket kullanılır; Connection/Upgrade header’ları ve H1’in 101 cevabı buraya kopyalanmaz. Bir H2 stream WebSocket taşırken aynı connection’daki diğer stream’ler HTTP işine devam edebilir. Her Browser/proxy kombinasyonunun bu profile’ı desteklediği varsayılmaz.
WEB-17.04 · Core · WebSocket, SSE ve webhooks ↗SSE: event almak, işi onaylamak değildirServer-Sent Events HTTP response body’sinde server’dan Browser’a text/event-stream taşır; EventSource aynı stream’de Browser→server application message göndermez. UTF-8 satırlarda data event payload’ını, event listener seçimini, id reconnect bağlamını, sayısal retry ise yeniden bağlanma zamanını etkiler. Blank line birikmiş data’nın dispatch edilmesini tetikler; yalnız TCP chunk gelmesi tam event oluştuğunu göstermez. Örnekteki block id:event-2 ve book title datası içerir; parser line buffer’ı ile UI state ayrı tutulur.
WEB-17.04 · Core · WebSocket, SSE ve webhooks ↗Webhook: provider’dan receiver’a ayrı requestWebhook Browser’da açılan stream değildir; provider server event’i receiver’a ayrı HTTP request olarak yollar. Receipt response’unun 2xx olması event’in kabul edildiğini bildirir, downstream business işinin bittiğini otomatik söylemez. Stripe provider profile duplicate delivery ve sıra dışı arrival ihtimalini açıklar. Atlas örneği generic book.updated event alias’ı kullanır; gerçek Stripe event veya account verisi içermez. Browser’ın API’den book okumasıyla provider’ın webhook teslimi direction, authentication ve lifetime bakımından farklıdır.
WEB-17.04 · Core · WebSocket, SSE ve webhooks ↗Established channel’ı sınırsız izin sanmakWebSocket handshake kabulünden sonra her message’ı aynı yetkiyle geçirmek yanlış varsayımdır. Session’ın süresi dolabilir, object başka tenant’a ait olabilir veya action channel profile’da bulunmayabilir. Message schema’sı geçse bile resource kararı gerekir. Policy-denied akışı book-read message’ı teslim alır; object permission koşulu sağlanmadığında service call üretmez ve denial döndürür. Bu durum channel kabulüyle message authority’sinin neden ayrı tutulduğunu gösterir.
WEB-17.04 · Red · WebSocket, SSE ve webhooks ↗Teslim edildi ile bir kez işlendi ayrımıSSE lastEventId bir client acknowledgement protokolü değildir; handler’ın UI’a uygulaması ile parser’ın ID güncellemesi farklı olaylardır. Webhook signature-valid sonucu da exactly-once delivery vaat etmez. Duplicate receipt ikinci business effect’e dönüşüyorsa signature idempotency yerine kullanılmış olabilir. Signature kontrolünden önce JSON normalize etmek başka bir sorundur: eşdeğer değer ağacı signed byte representation’ı değiştirebilir. Örneğin iki inert raw-body string’i arasındaki fark, değer eşitliği ile byte eşitliğinin ayrımını gösterir.
WEB-17.04 · Red · WebSocket, SSE ve webhooks ↗Message sınırında karar ve lifetimeChannel profile message type, action, allowed object scope, size ve rate limit’i tanımlar. Server session/context’i trusted kaynaktan kurar, her message’ın object/action iznini değerlendirir ve protected data’yı ancak allow sonrasında üretir. Session expiry/logout sonrası channel invalidation davranışı belirlenir; yalnız handshake’te login kontrolü uzun connection’a yetmez. Proxy timeout, application heartbeat ve protocol ping/pong farklı liveness sinyalleridir; pong book-read permission kanıtı değildir.
WEB-17.04 · Blue · WebSocket, SSE ve webhooks ↗Resume, receipt ve durable effect ledgerSSE contract retained history, Last-Event-ID yorumu, expired-cursor recovery ve app-level dedupe davranışını açıklar. Örnekte event-2 iki kez teslim edilse de UI apply count 1 kalır; parser ID state ile app seen-ID set farklıdır. Client close ve server’ın HTTP 204 ile reconnect’i durdurması recovery tasarımına girer. Sayısal retry alanı delivery guarantee değildir; Browser backoff ve network koşulları nedeniyle kesin wall-clock schedule sonucu çıkarılmaz.
WEB-17.04 · Blue · WebSocket, SSE ve webhooks ↗channelComparisonÜç farklı actor direction ve lifetime.
WEB-17.04 · WebSocket, SSE ve webhooks ↗websocketProfilesH1 Upgrade ile negotiated H2 extended CONNECT farklıdır.
WEB-17.04 · WebSocket, SSE ve webhooks ↗messageRowsEstablished connection sonrası seçilmiş per-message resource gate.
WEB-17.04 · WebSocket, SSE ve webhooks ↗sseNormal event block, parser ID ve ayrı app apply count.
WEB-17.04 · WebSocket, SSE ve webhooks ↗webhookRaw bytes ve declared integrity/freshness/idempotency receipt ledger.
WEB-17.04 · WebSocket, SSE ve webhooks ↗API contract hangi deployment’a ait?Atlas notes contract’ı readPublicNote operation’ını tanımlar. Inventory yalnız endpoint listesi değildir: host, environment, owner, API version, lifecycle, policy revision, data class ve integration flow aynı kayıtla eşleşir. notes-v2 active, notes-v1 retired olarak işaretlidir; bu etiket gerçek deployment’ın kaldırıldığını tek başına kanıtlamaz. Public title’ın bile hangi store’dan hangi consumer’a gittiği bilinmelidir. OpenAPI’de openapi, description format version’ını; info.version, document version’ını belirtir. /v2 ise ürünün API version tercihidir. Bunlar aynı sayı olmak zorunda değildir. Artifact’teki contractFragment tam bir OpenAPI document değildir; read-only GET ile Tea & Bread response shape’ini anlatan seçilmiş alanları gösterir.
WEB-17.S01 · Core · API inventory ve authorization contracts ↗Description ile authorization contract ayrı katmanlardırOpenAPI operationId description içinde unique business operation bağlantısı sağlar; security hangi schemes’in istenebileceğini tanımlar. Tek Security Requirement Object içindeki multiple schemes birlikte gerekir; array’deki requirement alternatives’tan biri yeterlidir. Empty requirement object {} anonymous alternative, operation-level security: [] ise top-level declaration’ı kaldırır; bunlar aynı yazım değildir. Bu description runtime enforcement’ı kendiliğinden kurmaz. Atlas ayrıca notes.read function grant, public note relationship ve title-only response projection tanımlar. Schema type check bu üç business kararın yerine geçmez. Response contract’ı title içerirken internal object alanlarının consumer’a taşınması permitted read fields ile sınırlanır; token veya scope bulunması bütün objects’a read izni değildir.
WEB-17.S01 · Core · API inventory ve authorization contracts ↗Version drift bir evidence sorusudurÖrnek önce inventory binding ve lifecycle’ı, sonra gözlenen policy revision ile contract eşleşmesini kontrol eder. Policy-drift satırında v2 adı doğru olsa da runtimePolicyRevisionDeclared=6, contract’ın beklediği 7 ile uyuşmaz; resource delivery durur. Unknown-version satırında host veya operation için inventory kanıtı yoktur. Bu sonuç unknown scope olarak ayrılır; hostile host çıkarımı yapılmaz. Deprecation, consumer’a migration uyarısıdır; route’u kapatan mekanizma değildir. Retirement planı owner, client migration ve ilgili ingress/worker yollarının removal/deny kanıtını gerektirir. Düzeltme yalnız yeni version’a uygulanırsa eski deployment aynı data’ya başka policy ile erişebilir; inventory bu ilişkiyi görünür kılmalıdır.
WEB-17.S01 · Core · API inventory ve authorization contracts ↗Dokümante edilen route’u tek yüzey sanmakNormal consumer, desteklenen notes-v2 contract’ını kullanır. Bozulan varsayım, güncel dokümantasyonda görünmeyen deployment’ın artık çalışmadığı veya aynı security policy’yi uyguladığıdır. Paralel version/environment’lar aynı resource’a farklı enforcement ile bağlıysa integration’ın read/action sınırı değişebilir. Eski version’ın varlığı tek başına vulnerability veya breach değildir; retirement ve policy kanıtı belirleyicidir. Artifact notes-v1 için retirement gate’inde ret gösterir, dış host’un reachability’sini ölçmez. Owner’a bağlı inventory reconciliation, gerekli policy’nin ilgili version’larda uygulanması ve migration/removal doğrulaması bu sınırı korur. Verilen kayıtlar gerçek exposed-service envanteri yerine geçmez.
WEB-17.S01 · Red · API inventory ve authorization contracts ↗Contract doğruluğunu business permission sanmakNormal request shape ve tanımlanmış security scheme, consumer’ın doğru interface’i kullandığını gösterebilir. Bunlar object ilişkisini veya response property permission’ını otomatik uygulamaz. Schema validation veya gateway authentication sonrasında handler function/object/property kararlarını atlarsa, schema-valid bir request yetkisiz resource read ya da gereksiz alanların teslimiyle sonuçlanabilir. PermissionRows, public-note için olumlu sonucu ve her ayrı ret gate’ini inert verilerle gösterir. Operation’ın policy’ye açıkça bağlanması ve minimum response projection bu sınırı korur. Eksik inventory kanıtı ile object denial aynı reason değildir; ikisini birleştirmek hangi control’ün eksik olduğunu saklar.
WEB-17.S01 · Red · API inventory ve authorization contracts ↗Inventory ve runtime evidence’ını reconcile etOwner inventory’sinde host, environment, API version, contract revision, policy revision ve data-flow owner bulunur. Runtime observations, deployment/route identity ve policy revision’ı aynı operation correlation’a bağlar. Dokümanın başarıyla build edilmesi veya access-log kaydının bulunmaması retirement kanıtı değildir. Baseline active v2, policy revision=7 ve izinli title response’udur. Retired, revision mismatch ve unknown kayıtlar ayrı reason taşır. Unknown evidence araştırma gerektirir; kabulün durması saldırı kanıtı sayılmaz. Gerekli telemetry yoksa observed state bilinmiyor kalır. Reconciliation, müşteri body’sini taşımadan resource class ve onaylı integration yönünü kaydedebilir; bu local JSON gerçek service envanterini oluşturmaz.
WEB-17.S01 · Blue · API inventory ve authorization contracts ↗Versioning kontrolünü migration kararına bağlaContract regression, readPublicNote için expected response key’leri ile function/object/property ret sonuçlarını birlikte değerlendirir. Operation security override’ı root policy ile karşılaştırılırken empty object, empty array ve alternative semantiği korunur. Description format update ile business API change ayrı kararlardır; schema version artışı authorization düzeltmesini eski deployment’a taşımaz. Owner ve consumer migration kanıtı tamamlandığında removal/deny state ayrıca doğrulanır. Legacy client veya staging data bağlantısı normal drift nedenleri olabilir. Local JSON comparison yalnız seçilen revision/property sonuçlarını gösterir; tam OpenAPI validator veya deployment enforcement değildir. Backport, compatibility süresi ve retirement kararı etki ile policy farkına göre verilir.
WEB-17.S01 · Blue · API inventory ve authorization contracts ↗inventoryHost/environment/owner/lifecycle ve revision kayıtları.
WEB-17.S01 · API inventory ve authorization contracts ↗contractFragmentSelected description fields; complete schema document değil.
WEB-17.S01 · API inventory ve authorization contracts ↗rowsBinding/lifecycle/revision admission ve delivery sonuçları.
WEB-17.S01 · API inventory ve authorization contracts ↗permissionRowsFunction/object/property read policy ayrı gate’ler.
WEB-17.S01 · API inventory ve authorization contracts ↗securitySemanticsOAS requirement composition ve override distinction.
WEB-17.S01 · API inventory ve authorization contracts ↗Resolver bir permission sınırıdırGraphQL schema, hangi field ve type’ların ifade edilebildiğini söyler; Duru’nun belirli note üzerinde hangi property’yi okuyabileceğini söylemez. Parse ve validation tamamlandıktan sonra resolver, authenticated actor, object ilişkisi, action ve field policy’sini aynı context içinde değerlendirmelidir. Atlas Notları yalnız note-A başlığını okumayı modeller. title nullable olarak seçilmiştir: field reddedilirse değer null olur ve errors içinde ilgili response path bulunur; izinli kardeş field’lar ayrı değerlendirilebilir. Non-Null kullanılsaydı null, uygun nullable parent’a kadar yayılabilirdi. Bu seçim uygulamanın authorization error politikasını görünür kılar; GraphQL standardı belirli bir access-control kütüphanesi veya evrensel HTTP status zorunlu kılmaz. data ve errors birlikte bulunması, korunan title’ın döndüğü anlamına gelmez.
WEB-17.S02 · Core · GraphQL, streaming ve message authorization ↗Cost, type ve permission ayrı sorulardırBir resolver izinli olsa bile liste büyüklüğü ve tekrar eden alt seçimler kaynak tüketimini değiştirebilir. Query cost bu nedenle ayrı bir admission kararıdır; depth tek başına tüm fan-out’u açıklamaz. Defterde kullanılan title=1 ve liste sınırı=10 uygulamanın seçtiği öğretim değerleridir, GraphQL’in sabit katsayıları değildir. Cost kabulü permission vermez; permission kabulü de sınırsız iş bütçesi vermez. Node ve relationship üzerinden ulaşılan aynı nesneye farklı yolların policy’yi atlamadan aynı kararı uygulaması gerekir. Cache veya batch loader kullanılıyorsa key ve sonuç projection’ı actor/tenant/field bağlamına uygun olmalıdır. Sahne query parser, HTTP binding, gerçek resolver veya cache çalıştırmaz; izinli title projection’ının hangi koşullardan sonra hazırlanabileceğini adım adım gösterir.
WEB-17.S02 · Core · GraphQL, streaming ve message authorization ↗WebSocket connection’dan message’aWebSocket handshake’in kabul edilmesi bir communication channel açar. Bu karar tüm gelecekteki message’lara ve object’lere otomatik permission vermez. Browser Origin kontrolü, beklenen web application’dan gelen açılış isteğini değerlendirmeye yarar; non-browser client için bağımsız identity kanıtı değildir. Cookie’nin gönderilip gönderilmemesi de cookie ve browser kurallarına bağlıdır. Message handler, tanımlı shape ve action’ı çözüp güncel actor/session durumunu ve object policy’sini yeniden kullanır. Defterin expired dalında channel daha önce kabul edilmiştir, fakat now=120 ve validUntil=120 iken yeni notes.read message’ı reddedilir. Bu uygulamada equality geçersiz sayılır; WebSocket protokolü kendi başına böyle bir session timer tanımlamaz. Store’a read teslim edilmez ve title body hazırlanmaz.
WEB-17.S02 · Core · GraphQL, streaming ve message authorization ↗SSE subscription’ın ömrüSSE normalde server’dan client’a event akıtır; EventSource bir iki yönlü command channel değildir. İlk subscription admission’ı kadar, gelecekteki her event’in recipient ve object kapsamı da önemlidir. event id ve reconnect cursor hangi noktadan devam edileceğini anlatır; actor identity veya yeni permission yaratmaz. Subscription revoked olduğunda yeni title event’i tutulur. Sahnenin bu dalı server’ın yerel gate kararında biter: client’ın close gözlemi, reconnect ve daha önce aldığı verinin geri çekilmesi simüle edilmez. Ağ kapandığında EventSource yeniden bağlanmayı deneyebilir; server yeni admission’ı güncel context ile değerlendirmelidir. retry süresi transport davranışına yardım eder, exactly-once business delivery veya tüm event’lerin kayıpsız tekrarını garanti etmez. Kaynak aktarımı ile policy kararı aynı state olarak sunulmaz.
WEB-17.S02 · Core · GraphQL, streaming ve message authorization ↗gRPC ve SOAP’a kısa fakat doğru girişgRPC bir service method çağrısını typed input/output ile ifade eder; Protocol Buffers yaygın varsayılandır. Unary, server streaming, client streaming ve bidirectional streaming farklı message akışlarıdır. Tek RPC içindeki stream ordering, başka RPC’nin veya business action’ın permission’ı değildir. Channel credentials ile call credentials farklı kapsamlardır; uygulama yine method ve object için karar verir. SOAP 1.2 ise XML Envelope içinde isteğe bağlı Header ve zorunlu Body yapısını tanımlar. Header’ın hangi node’da işlendiği ve Body’nin ultimate recipient’a yönelmesi, içerideki notes.read işleminin izinli olduğunu kanıtlamaz. Security gibi özellikler ek binding/extension ve uygulama profilinde tanımlanır. Defter yalnız bu karşılaştırmanın typed ledger’ıdır: gerçek protobuf message, SOAP XML parser, WS-Security signature veya remote RPC çalıştırılmamıştır.
WEB-17.S02 · Core · GraphQL, streaming ve message authorization ↗Açık channel’a fazla anlam yüklemekİncelenecek varsayım “connection kabul edildi, artık bu actor’ın bütün message’ları izinli” cümlesidir. Bunun yanlış sonuca dönüşmesi için uygulamanın current session, operation ve object kararını channel başlangıcındaki boolean’a indirgemesi gerekir. Defterde connectionAccepted=true ile messageAllowed=false aynı anda doğrudur; zaman sınırı dolduğunda store’a hiçbir yeni read gitmez. SSE’de de kabul edilmiş subscription ile yeni event delivery’si farklıdır. Red perspektif, açık channel’ın kendi başına bir zafiyet olduğunu iddia etmez: handler’ın güncel permission kontrolünü nereye koyduğunu ve hangi verinin o kontrolden önce hazırlandığını sorar. Revocation’ın nasıl yayıldığı hakkında kanıt yoksa sonuç “revocation çalışıyor” veya “çalışmıyor” değildir; bu bağımlılık unknown olarak kaydedilir. Önceden teslim edilmiş title’ın hafızadan silindiği de varsayılmaz.
WEB-17.S02 · Red · GraphQL, streaming ve message authorization ↗Schema başarısından business yetkisine sıçramakİkinci varsayım, type validation ve makul query cost sağlandığında resolver’ın object ve field policy’sine gerek kalmadığıdır. Bu karışıklığın etkisi sadece mutation değildir; title projection’ı da izin gerektiren bir disclosure olabilir. Buradaki note halka açık bir öğretim nesnesi olsa bile handler’ın selected title gate’i açıkça modellenir. Field-denied dalında response skeleton ve errors gönderilebilir, fakat korunan title değeri yoktur; “body yok” ifadesi tüm GraphQL envelope’ın yokluğunu değil title projection’ının yokluğunu anlatır. Typed gRPC request veya iyi biçimli SOAP Envelope da aynı business kararı devralmaz. Red inceleme yöntemi sabit policy satırlarının conjunction’ını izlemektir: operation, object, field ve zaman koşullarından hangisinin kanıtlandığı ayrı tutulur. Query çalıştırma, endpoint keşfi veya permission atlama denemesi bu örneğin bir parçası değildir.
WEB-17.S02 · Red · GraphQL, streaming ve message authorization ↗Bir policy, farklı delivery biçimleriBlue tasarımında readTitle kararı actor, tenant, note-A, action ve property girdileriyle tanımlanır. GraphQL resolver, WebSocket message handler, SSE event filter ve gRPC method aynı policy sonucunu kendi delivery formatına taşır; sadece connection seviyesinde kontrol bırakılmaz. SOAP için de parser’dan çıkan Body action’ı approved application handler’a bağlanır. Bunun tek global boolean olması gerekmez: resource policy ve field projection ayrı ve okunabilir kalabilir. Cost/size sınırı permission gate’inden bağımsız bir bütçedir. Subscription expiry ve revocation davranışının uygulama tarafından belirlendiği belgelenir; açık bir channel’a sonsuz identity ömrü verilmez. Cache key’leri ve batch context’i policy girdilerini kaybetmez. Client’a gönderilen hata güvenli ve anlaşılır olurken internal karar nedeni, actor context ve policy revision erişim kontrollü telemetry’de tutulur.
WEB-17.S02 · Blue · GraphQL, streaming ve message authorization ↗Sonuç kadar yokluğu da doğrulamakOlumlu fixture, izinli read’in title projection’ını üretmesini kontrol eder; olumsuz fixture aynı zamanda store delivery=0, mutation=false ve protectedBody=null sonuçlarını kontrol eder. GraphQL field denial için null+errors shape’i seçilen nullable schema ile uyumlu olmalıdır; HTTP status buradan otomatik türetilmez. WebSocket’te daha önce kabul edilmiş connection’ın zaman sınırında yeni message’ı açmadığı, SSE’de revoked subscription’ın yeni event’i client’a taşımadığı ayrı satırlardır. Missing-policy dalı false ile aynı kanıt değildir: permissionUnknown olarak saklanıp güvenli sonuç deny seçilir. Bu ayrım operasyonel teşhiste yararlıdır; reddin gerçekten policy sonucu mu yoksa context kaybı mı olduğunu gösterir. Animasyon bütün bu sonuçları supplied ledger üzerinden deterministik oynatır. Gerçek browser Origin/Cookie enforcement, stream backpressure, RPC server veya subscription adapter için ayrıca entegrasyon kanıtı gerekir.
WEB-17.S02 · Blue · GraphQL, streaming ve message authorization ↗rowsChannel kabulü ve güncel permission conjunction’ı; null korunan title’ın yokluğudur.
WEB-17.S02 · GraphQL, streaming ve message authorization ↗protocolLedgerProtocol biçimi ile business kararının karşılaştırması; gerçek wire capture değildir.
WEB-17.S02 · GraphQL, streaming ve message authorization ↗unknownEvidenceEksik context ayrı unknown kanıtı ve güvenli deny sonucudur.
WEB-17.S02 · GraphQL, streaming ve message authorization ↗JSON veri üretir; davranış seçmezDeserialization, dış representation’ı programın okuyabildiği değerlere dönüştürür. JSON’da bu değerler object, array, string, number, boolean ve null’dır. JSON.parse ile elde edilen bir book object, uygulamadaki Book class’ının instance’ı değildir; metin kendiliğinden caption method’u veya approved constructor seçmez. Reconstruction ise bunun ardından gelen ayrı tasarım kararıdır: hangi doğrulanmış field’ların hangi güvenilir domain type’a aktarılacağını uygulama belirler. Atlas Notları book-note/v1 formatında id, title ve pageCount taşır. Tea & Bread sadece düz bir title string’idir. Parser’ın başarılı olması, pageCount’un uygun bir integer olduğunu, id’nin istenen object’e bağlı olduğunu veya actor’ın bu veriyi kullanmaya yetkili olduğunu kanıtlamaz. Bu ders yalnız fixed read-only caption üretir; object’ten DOM, dosya veya database action çıkarmaz.
WEB-17.S03 · Core · Deserialization ve object reconstruction boundaries ↗Closed DTO’dan trusted constructor’aDefterin profile’ı sadece üç key kabul eder; pageCount 1–1000 arası integer, title 1–80 karakter string, id tam note-A olmalıdır. Unknown subtitle field’ı bu profile’da reject edilir; bu, tüm API’lerin unknown field’ları reddetmesi gerektiği iddiası değildir. Versioned contract farklı bir compatibility policy seçebilir, ama silent field loss saklanmamalıdır. Kabul edilmiş DTO açık projection ile oluşturulur; constructor yalnız bu üç değeri alır. Constructor adı input’tan okunmaz, runtime module veya method dış veriye göre seçilmez. ContextPresent ve readAllowed de ayrı server-side girdilerdir; JSON içindeki herhangi bir field bu gate’i açamaz. Missing context durumunda object biçimi doğru olsa bile reconstruction sonucu client’a teslim edilmez. Doğrulama ve authorization’ın her biri kendi kararını vermiş olur.
WEB-17.S03 · Core · Deserialization ve object reconstruction boundaries ↗Reviver ve format sınırlarıJSON.parse’ın optional reviver’ı uygulamanın verdiği bir function’dır; text’in içindeki çalıştırılabilir talimat değildir. Böyle bir hook kullanıldığında dönüşümün etkisini ayrıca değerlendirmek gerekir; burada reviver kullanılmaz. JSON da her runtime değerini kayıpsız taşıyan evrensel snapshot değildir. Class identity, method’lar ve özel runtime davranışları bu üç-field DTO’nun parçası değildir. Number precision, nesting ve text size sınırları parser/contract profilinde belgelenmelidir. JSON object member adlarının unique olması interoperability için önemlidir; duplicate key behavior’a güvenmek yerine ingress parser profili açık seçilir. Bu fixture duplicate key üretmez ve duplicate-preserving parser çalıştırmaz. Saf data formatı risk yüzeyini daraltır, fakat downstream business method’unun, output context’in veya permission’ın güvenli olduğunu tek başına garanti etmez.
WEB-17.S03 · Core · Deserialization ve object reconstruction boundaries ↗Data ile runtime type arasındaki varsayımİncelenen hata sınıfı, dış representation’ın type veya davranış seçimine gereğinden fazla katılmasıdır. Bir object’in parse edilebilmesi, güvenilir domain object olduğuna dair yeterli kanıt değildir. Risk oluşması için uygulamanın dış değerleri approved DTO sınırından geçirmeden davranış sahibi object’lere, side-effect’lere veya permission kararlarına bağlaması gerekir. Bu örnekte sınıf adını taşıyan bir payload veya tehlikeli loader yoktur; finite Book constructor uygulamanın sabit kodudur. Unknown subtitle dalı uyumsuz contract girdisini gösterir, bir exploit sonucu değildir. Red okuyucu, “parse oldu” state’iyle “shape geçerli”, “actor izinli” ve “domain object oluşturuldu” state’lerini ayırır. Dış veri hangi noktada field projection olmaktan çıkıp davranış seçimine katılıyor sorusu somut bir inceleme sınırıdır; burada bu geçiş yalnız approved constructor üzerinden yapılır.
WEB-17.S03 · Red · Deserialization ve object reconstruction boundaries ↗İmza, schema ve context farklı kanıtlardırIntegrity doğrulaması varsa bu belirli byte’ların uygun provenance ile geldiğine katkı verir; field’ların business anlamını veya alıcının action’ını kendiliğinden yetkilendirmez. Bu derste gerçek signature yoktur ve provenance assumed değil, profile dışındaki bir bağımlılık olarak yazılıdır. Type-invalid dalında pageCount string olarak gelir; parser bunu doğru biçimde string yapar, contract integer beklediği için karar deny olur. Missing-context dalında aynı normal DTO vardır ama context kanıtı yoktur; bu durumda “actor yetkisiz olduğu kanıtlandı” denmez. Güvenli sonuç yine body ve reconstruction delivery’si olmamasıdır. Bu ayrım hem false confidence’ı hem gereksiz alarmı azaltır: format uyumsuzluğu, eksik authorization kanıtı ve tehlikeli runtime reconstruction aynı iddia değildir. Sabit örnek hiçbir kurum formatına veya gerçek endpoint’e uygulanmaz.
WEB-17.S03 · Red · Deserialization ve object reconstruction boundaries ↗Explicit projection ve bounded reconstructionBlue pipeline’ın sırası dış text → JSON values → closed schema → authorization context → explicit DTO → fixed constructor → plain caption’dır. Schema geçmeden constructor çalıştırılmaz; context bulunmadan caption teslim edilmez. Başarı branch’inde yalnız id, title ve pageCount kopyalanır. Object’in frozen olması mutation riskini azaltan yerel bir tercihtir, identity doğrulaması veya derin graph’ın otomatik immutable olduğu anlamına gelmez. Method implementation uygulama kodunda sabittir; input’un davranış yüklemesi gerekmez. İleride yeni field eklenirse version/compatibility kararı ve constructor projection’ı birlikte gözden geçirilir. Rich runtime serialization gerektiren başka formatlar için ayrı parser, type allowlist ve behavior değerlendirmesi gerekir. Pure JSON seçimi burada küçük ve anlaşılır bir sınır sağlar; bütün formatlar veya bütün deserializer’lar için tek güvenlik sertifikası üretmez.
WEB-17.S03 · Blue · Deserialization ve object reconstruction boundaries ↗Reconstruction’ın gerçekleşmediğini kanıtlamakFixture kontrolü yalnız beklenen caption’ın doğru olmasına bakmaz. Unknown field, wrong type ve missing context satırları için constructed=false, delivered=false, body=null ve mutation=false birlikte aranır. Native kontrol fixed JSON.parse ile plain object’in Book instance olmadığını, validated projection’dan sonra approved constructor’ın çalıştığını ve caption’ın sadece düz string olduğunu gözler. Sonuç gerçek bir JSON ve class davranışıdır; bir web endpoint’in authorization’ı veya unsafe serialization formatının güvenliğe alındığı iddiası değildir. Text parse edilmiş olsa bile reddedilen satırda constructor sayacı artmaz. Context eksikliği unknownPermission olarak tutulur; hata kodu uygulama profilinde seçilir. Bu kontroller contract değiştiğinde anlamlı kalır, çünkü normal girdinin yanında field/type/context sınırlarını da karşılaştırır. Browser DOM, persistence ve uzak deserialization service bu dersin kanıt kapsamının dışındadır.
WEB-17.S03 · Blue · Deserialization ve object reconstruction boundaries ↗profileYerel closed contract ve trusted constructor seçimi; input constructor seçmez.
WEB-17.S03 · Deserialization ve object reconstruction boundaries ↗rowsYalnız sabit normal ve harmless field/type/context karşılaştırmaları.
WEB-17.S03 · Deserialization ve object reconstruction boundaries ↗runtimeLedgerData, class davranışı ve authorization arasındaki farklar.
WEB-17.S03 · Deserialization ve object reconstruction boundaries ↗Database neden browser state’inden ayrıdır?Web application birden çok request ve kullanıcı arasında paylaşılacak structured state’e ihtiyaç duyabilir: public book catalog, author bilgisi veya note’un son kaydı gibi. Database data’yı saklayan, sorgulayan ve tutarlılık sınırlarını uygulayan bileşendir. Browser preference cookie’si veya tek process variable’ı aynı ownership’i sağlamaz. Database kullanmak da storage’ı otomatik durable yapmaz; bu dersin SQLite relational örneği :memory: connection içinde yaşar ve disk durability garantisi taşımaz.
WEB-18.01 · Core · Relational data ve relationships ↗Key ilişkiyi sınırlar; join sonucu üretirbooks.author_id FOREIGN KEY authors.id’ye referans verir. Parent author’ın birden çok book’a karşılık gelmesi one-to-many ilişkiyi gösterir; her book’ın NOT NULL author_id’si bu fixture’de bir parent’a bağlıdır. Foreign key mevcut parent key’i şart koşar; parent’ın bütün attributes’ını book row’una kopyalamaz. Join books ve authors eşleşmesini kullanıp book title ile author name’i aynı result row’unda üretir. Constraint ile query iki farklı mekanizmadır.
WEB-18.01 · Core · Relational data ve relationships ↗Schema declaration ile enforcement aynı kanıt değildirRelational ilişkiyi incelerken CREATE TABLE içinde FOREIGN KEY görmekle yetinme. İlgili SQLite connection’da foreign_keys değeri ve beklenen constraint sonucu birlikte gerekir. Parent bulunmayan catalog row’unun reddi o connection’ın referential-integrity sınırını gösterir; başka connection veya schema için aynı davranışın kanıtı değildir. Application comment’i ile uygulanan constraint birbirinin yerine geçmez.
WEB-18.01 · Red · Relational data ve relationships ↗Result multiplicity ve identity sınırıMany-to-many join tek logical book için birden fazla result row üretebilir. Tea book’ın iki tag’i varsa iki row normaldir; application bunu duplicate book veya iki independent object sanmamalıdır. Olası etki yanlış aggregate veya kullanıcıya aynı record’un tekrar gösterilmesidir. Kontrol, result shape ve association cardinality’sini presentation mapping’e bağlamaktır.
WEB-18.01 · Red · Relational data ve relationships ↗Schema ve result ledger’ini bağlaArtifact author kaydını [1,Duru], books kayıtlarını [10,Tea book,1] ve [11,Coffee book,1] olarak gösterir. ORDER BY books.id join sonucundaki iki title/name row’unu sıralar. Book_tags üç unique pair içerir; Tea book iki tag’e bağlı olduğundan grouped book count ile raw join count farklı soruları yanıtlar. Table ve field’ler örneğin sentetik schema’sına aittir; gerçek product veya kullanıcı verisi değildir.
WEB-18.01 · Blue · Relational data ve relationships ↗İlişki selector’ını tek connection’a bağlaXPath count(/audit/relation[@parentExists="false" and @insertAccepted="true"]) parent olmadan insert kabul edildiğini belirten kayıtları sayar. Normal foreign-key rejection sonucu 0, tutarsız kabul içeren kontrol kaydı 1 verir. Bir book’ın birden çok tag’e bağlanması bu ihlal değildir; beklenen cardinality’dir. Event eksikken count=0 çıkması enforcement kanıtı olmaz, kanıt boşluğu olarak kalır.
WEB-18.01 · Blue · Relational data ve relationships ↗schemaAuthored SQLite keys/nullability; gerçek product schema’sı değil.
WEB-18.01 · Relational data ve relationships ↗joinConstraint’ten ayrı ordered read result’i.
WEB-18.01 · Relational data ve relationships ↗enforcementSeçilmiş connection’daki observed FK/duplicate-pair boundaries.
WEB-18.01 · Relational data ve relationships ↗Statement, bound data ve result shapeSQL query lifecycle uygulamanın bir operation seçmesiyle başlar. Driver statement ve bound values’ı database’e verir; engine planı çalıştırır, cursor result row’larını uygulamaya taşır. SELECT id, title FROM notes WHERE title=? statement’ı sabittir; Tea note bir parameter value’dur. Placeholder value içindir: table/column adı veya SQL fragment seçimi aynı binding değildir. Dynamic identifier gerekiyorsa ayrı controlled selection sözleşmesi gerekir.
WEB-18.02 · Core · Query lifecycle, transactions ve ORM ↗Transaction’ın kararı statement success’ten büyüktürTransaction birden çok değişikliğin tutarlılık sınırını tanımlar. Writer connection BEGIN sonrası note title update ve audit row insert yapar. COMMIT başarılı olduğunda fresh reader Updated note ile bir audit row görür. Writer’ın kendi uncommitted result’i başka connection’ın gördüğü committed state ile aynı değildir. Örneğin reader’ı her SELECT’i bitirir; long-lived read transaction tutmaz. Başka isolation veya journal seçimlerinde visibility sınırı farklı olabilir.
WEB-18.02 · Core · Query lifecycle, transactions ve ORM ↗Index, pool ve ORM’nin farklı sorumluluklarıIndex query planner’a bir lookup seçeneği sunar; her query’nin onu kullanması veya hızlanması garanti değildir. SQLite örneğinde WHERE title=? planı index öncesinde scan, idx_notes_title eklendikten sonra indexed search gösterir. Result row’ları değişmez; süre veya throughput ölçülmez. Index storage ve write-maintenance maliyeti taşır; integrity, authorization veya commit’in yerine geçmez.
WEB-18.02 · Core · Query lifecycle, transactions ve ORM ↗Execution success, commit ve access policyFixed statement ile parameter values’ı ayrı oku. Tea note araması bir data comparison’dır; query yapısını seçme yetkisi değildir. Binding values’ın SQL structure yerine data olarak işlenmesine yardım eder, fakat hangi public/private resource’un seçilebileceğini veya object permission’ını tek başına belirlemez. Query kabulü ile application authorization farklı sınırlardır.
WEB-18.02 · Red · Query lifecycle, transactions ve ORM ↗Abstraction katmanı boundary’yi silmezORM object’in title property’si Updated note olmuşsa store commit kanıtı henüz yoktur. Flush, query, cache ve identity-map davranışı framework/configuration kapsamında okunur. Index planının değişmesi de result correctness veya production throughput sonucu değildir. Query sayısı ya da class adı yerine operation ve gözlenen boundary esas alınır.
WEB-18.02 · Red · Query lifecycle, transactions ve ORM ↗Query ve transaction ledger’ini ayrı tutArtifact query alanında statement, parameters=[Tea note] ve rows=[[1,Tea note]] bulunur. Normal transaction’da writerBefore=Tea note, writerDuring=Updated note, readerBeforeCommit=Tea note ve readerAfterCommit=Updated note ayrı tutulur. Reader SELECT’lerini tamamladığı için bunlar fresh-read görünürlüğünü anlatır; long-lived snapshot için aynı sonuç varsayılmaz.
WEB-18.02 · Blue · Query lifecycle, transactions ve ORM ↗Pool cleanup, index plan ve ORM sınırlarıXPath count(/audit/lease[@returned="true" and @transactionOpen="true"]) transaction açıkken returned olmuş lease kayıtlarını sayar. Normal reset için 0, tutarsız returned state içeren kontrol kaydı için 1 verir. Busy akışında queryExecuted=false beklenen sonuçtur. Observation eksikken count=0 clean connection kanıtı değildir; gereken transaction state bilinmiyordur.
WEB-18.02 · Blue · Query lifecycle, transactions ve ORM ↗queryFixed SQL structure’dan ayrı bound data.
WEB-18.02 · Query lifecycle, transactions ve ORM ↗rollbackStatement ABORT ile explicit transaction rollback ayrımı.
WEB-18.02 · Query lifecycle, transactions ve ORM ↗poolÖğretim kapasitesinde lease/reset; gerçek framework pool değil.
WEB-18.02 · Query lifecycle, transactions ve ORM ↗NoSQL bir tek database davranışı değildirNoSQL, relational tables dışındaki farklı data modellerini bir arada anmak için kullanılır; document ve key-value modelleri bu dersin iki örneğidir. Bir ürünün query dili, schema validation, transaction ve consistency özellikleri diğerine otomatik taşınmaz. MongoDB document model’inde collection içindeki fields farklı olabilir; bu, application’ın field anlamlarını düşünmemesi demek değildir. MongoDB schema validation destekler; embedding veya referencing seçimi application access pattern’i ve relationship ownership’iyle yapılır.
WEB-18.03 · Core · NoSQL ve key-value stores ↗Lifetime, revision ve availability ayrı sonuçlardırÖrnekte note expiresAt=50 logical clock birimine sahiptir. Clock=49’da value bulunur; clock=50 expiry boundary’sinde missing olur. Bu gerçek wall-clock timer ölçümü değildir. Eviction ise lifetime bitmeden memory pressure veya policy nedeniyle key’in çıkarılmasıdır. Redis maxmemory policy key evict edebilir; noeviction yeni write’a error verebilir. Key hiç yaratılmamış da olabilir. Basit missing sonucu bu nedenleri tek başına ayırmaz.
WEB-18.03 · Core · NoSQL ve key-value stores ↗Missing sonucu ownership’i açıklamazKey lookup missing olduğunda hangi data owner’ının okunduğunu ve adapter’ın hangi error’ları ayırdığını sor. Expired cache entry ile hiç yazılmamış authoritative record aynı product kararı değildir. Memory-only cache yokluğu database fallback gerektirebilir; authoritative store outage’ını missing’e çevirmek yanlış default state üretebilir. Örneğin logical lifetime ve availability=false koşulları bu ayrımı gösterir; gerçek Redis telemetry’si değildir.
WEB-18.03 · Red · NoSQL ve key-value stores ↗Atomicity etiketini operation sınırına bağlaLocal adapter’ın expected revision reddi yalnız bir serialized owner decision’ı kanıtlar. Read ve write’ı ayrı adımlarda yapıp arada state değişebilmesini dışlamak başka varsayımdır. MongoDB single-document atomicity’sini bütün collection’a, Redis EXEC serialized processing’ini SQL rollback’e çevirmek de başka yanlış genellemelerdir. Etki, birbirine bağlı data’nın kısmen değişmesi veya stale kararın yeni state’i ezmesi olabilir; bu ders harmless version mismatch’te state’in korunduğunu gösterir.
WEB-18.03 · Red · NoSQL ve key-value stores ↗Adapter contract’ını uygulama kararına bağlaApplication sınırında get sonucu için found/value, missing ve unavailable/error ayrımını yaz. Value’nun schema validation’ı store operation’dan sonraki ayrı local adımdır; fixture parsed object’i kopya olarak döndürerek application mutation’ının store’u sessizce değiştirmemesini sağlar. Key mapping yalnız public synthetic note için seçilmiştir. Gerçek uygulamada identity/authorization, namespace isolation ve result presentation ayrıca tasarlanır.
WEB-18.03 · Blue · NoSQL ve key-value stores ↗Lifecycle policy’sini bağımsız doğrulaLogical clock ile expiry’nin hemen öncesini ve boundary anını karşılaştır; aynı value için expiry öncesindeki eviction ayrı sonuç olsun. Replacement’ın lifetime’ı koruyup korumadığı operation contract’ına yazılır. Redis policy’si seçilirken ürün dokümanı ve workload gerekir; örnekteki saat veya capacity değerleri production ayarı değildir. Local adapter’ın sonucu gerçek Redis/MongoDB davranışının kanıtı sayılmaz.
WEB-18.03 · Blue · NoSQL ve key-value stores ↗selectedModelLocal adapter scope; ürün runtime’ı değil.
WEB-18.03 · NoSQL ve key-value stores ↗hit/expiry/evictionLogical clock ve farklı missing koşulları.
WEB-18.03 · NoSQL ve key-value stores ↗staleExpected revision ile current value korunması.
WEB-18.03 · NoSQL ve key-value stores ↗unavailable/replacementError semantiği ve seçilmiş TTL replacement contract.
WEB-18.03 · NoSQL ve key-value stores ↗selectorSynthetic missing/error kararını sayan inert XPath.
WEB-18.03 · NoSQL ve key-value stores ↗Bir note’un bytes’ı ve kimliği nerede?Application’ın public note’u hem içerik bytes’ı hem de title, media type ve storage reference gibi metadata taşır. Object storage bir object’i seçilmiş namespace içindeki key ile adresler. Amazon S3 örneğinde bucket+key object adını belirler; versioning etkinse hangi version’ın seçildiği ayrıca önemlidir. Key’deki slash prefix’i directory hierarchy olmak zorunda değildir: S3’ün object modeli flat’tir, console logical folders gösterebilir. Filesystem path ise işletim sisteminin directory/file namespace’inde çözülür. İkisinin string’e benzemesi aynı mekanizma olduklarını göstermez.
WEB-18.04 · Core · Object storage, filesystem ve persistence flow ↗Application → bytes → database farklı completion’larNormal akışta application, public text’i encode eder ve buffered binary file’a yazar. flush, language-level buffer’ı underlying stream’e aktarır; ardından os.fsync(file descriptor) çağrılır. Python write sonucu kabul edilen byte sayısını verir. Write, flush ve fsync farklı aşamalardır; fsync’in başarı dönmesi bir power-loss recovery gözlemi değildir. Durability, işletim sistemi, filesystem, device ve directory metadata sınırlarını da içerir; bu örnek bütün platformlar için garanti vermez.
WEB-18.04 · Core · Object storage, filesystem ve persistence flow ↗Tek success alanına bütün state’i sığdırmaControlled persistence ledger’da write success, fsync completion ve metadata commit ayrı gözlemlerdir. File bytes mevcutken reference transaction rollback etmiş olabilir. Bu koşul storage’da bir orphan bırakır; application’ın public result’u unavailable olur. File’ın okunması reference’ın committed olduğunu göstermez, database row’unun bulunması da file bytes’ın mevcut veya beklenen representation’da olduğunu kanıtlamaz. İnceleme iki owner’ı bağımsız doğrular.
WEB-18.04 · Red · Object storage, filesystem ve persistence flow ↗Recovery sınırı görünür kalmalıOrderly reopen sonrası aynı bytes’ı okumak normal lifecycle kanıtıdır; elektrik kesilmesi, hardware cache veya filesystem recovery için ayrı kanıt gerekir. fsync callback/completion’ın tek başına bütün deployment topology’sinde durability olarak etiketlenmesi öğrencinin yanlış boundary öğrenmesine yol açar. Aynı şekilde S3 metadata dokumentasyonuyla local file’ın S3 durability’sini ölçtüğünü söylemek yanlıştır.
WEB-18.04 · Red · Object storage, filesystem ve persistence flow ↗Reference contract ve data contract’ını birlikte kaydetApplication note ID’sinden fixed store identity’ye mapping seçer; database row’unun aynı key ve byte length’i taşıdığını independent read ile kontrol eder. Adapter içerik için bytes, metadata için açık fields döndürür. Fixture media type text/plain ve synthetic public content kullanır; schema validation ve authorization başka application kararlarıdır. Object key’i local pathname’e rastgele birleştirmek yerine bu dersin bounded mapping’ini okuyarak namespace farkını gör.
WEB-18.04 · Blue · Object storage, filesystem ve persistence flow ↗Partial completion’ı temizlenebilir state olarak tasarlaFile-store başarısından sonra database failure olduğunda application false success dönmez. Reference’ın rollback edilmesi ile byte’ların kalması ayrı sonuçlardır; kalan orphan byte’lar ayrıca okunabilir. Cleanup veya reconciliation kararı, hangi owner’ın hangi key’i yönettiğini bilmelidir. Local örneğin geçici klasörünü silmek, production orphan scanner’ın davranışını veya kullanıcı dosyaları için uygun cleanup policy’sini göstermez.
WEB-18.04 · Blue · Object storage, filesystem ve persistence flow ↗identityObject key ve fixed owned file ayrı namespaces.
WEB-18.04 · Object storage, filesystem ve persistence flow ↗bytesUTF-8 byte/character bağımsız sayımı.
WEB-18.04 · Object storage, filesystem ve persistence flow ↗normal/orphan/danglingAyrı store/reference completion outcomes.
WEB-18.04 · Object storage, filesystem ve persistence flow ↗selectorSynthetic cross-owner false-success kararı.
WEB-18.04 · Object storage, filesystem ve persistence flow ↗Query yapısı ve aranan değer farklı sahiplerdeAtlas public catalog, title için exact match ve iki onaylı sort seçeneği sunar. Kullanıcı bir kitabın adını verir; uygulama hangi table, field, comparison ve projection kullanılacağını seçer. O'Reilly sıradan bir title’dır. Apostrophe olması onu hatalı business input yapmaz. Bu örnekte SQL statement sabittir, title ve public visibility ayrı bound values olarak driver’a gider. Statement içinde kitabın adı bir syntax parçası olarak birleştirilmez.
WEB-18.S01 · Core · SQL ve NoSQL’de query/data ayrımı ↗SQL driver’a iki ayrı argüman giderArtifact’te by-id ve by-title için iki önceden yazılmış SELECT bulunur. Her biri id ve title projection’ı, title equality ve visibility equality condition’ını içerir. Python sqlite3 execute çağrısına statement ve (title, public) tuple’ı ayrı verilir. Native check kendi :memory: database’ini açar, sıradan üç catalog row ekler ve O'Reilly için yalnız id=2 row’unu okur. İlk input kabulü query değildir; execute bitmeden result row hazır gösterilmez.
WEB-18.S01 · Core · SQL ve NoSQL’de query/data ayrımı ↗Sort bir value slot değildirTitle değeri ile ORDER BY column seçimi aynı görev değildir. Bir bind slot’una title yazmak onu column identifier haline getirmez. Uygulama id ve title seçeneklerini kendi iki sabit statement’ına map eder; rating gibi tanınmayan bir sort query çalışmadan reddedilir. Bu örnekte arbitrary identifier, raw SQL fragment veya yön string’i kabul edilmez. Kullanıcının sort seçmesi, query dilini yazma yetkisi vermez.
WEB-18.S01 · Core · SQL ve NoSQL’de query/data ayrımı ↗Document filter da bir query dilinin parçasıdırNoSQL etiketi interpretation boundary’yi ortadan kaldırmaz. Uygulama scalar title’ın type’ını doğruladıktan sonra kendi equality filter’ını kurar. Client’tan gelen object’i olduğu gibi filter diye kullanmak, uygulamanın query yapısını client’ın veri yapısıyla karıştırır. Bu derste sıradan {display: Tea} object’i title:string contract’ına uymaz ve herhangi bir document lookup yapılmadan reddedilir. Object’in grammar olarak parse olması title değeri olmasını sağlamaz.
WEB-18.S01 · Core · SQL ve NoSQL’de query/data ayrımı ↗Doğru query, doğru erişim kararıyla birleşmeliBinding query yapısını korur; hangi row’un hangi caller’a sunulabileceğini tek başına belirlemez. Bu catalog yalnız public visibility için oluşturulmuş sabit eğitim verisidir. Özel kayıtlar, tenant membership, servis account izinleri ve field-level disclosure gerçek uygulamada ayrı policy ister. Public scope condition uygulama tarafından seçilir; title alanının içinden yeni bir scope kararı türetilmez.
WEB-18.S01 · Core · SQL ve NoSQL’de query/data ayrımı ↗Review sorusu: değer ne zaman yapıya dönüştü?Bir incelemede ilk soruyu input’un görünüşü yerine sorumluluklar üzerine kur: uygulama statement/filter’ı nerede seçiyor, caller hangi alanları etkileyebiliyor, driver’a tam olarak hangi typed values gidiyor? Sıradan O'Reilly title’ı, noktalama işaretinin business data olarak korunabildiğini gösterir. Bu bir saldırı string’i denemesi değildir. Örneğin sabit SELECT’i ve ayrı tuple’ı, query yapısının hangi dosyada uygulama tarafından belirlendiğini görünür kılar.
WEB-18.S01 · Red · SQL ve NoSQL’de query/data ayrımı ↗Parse edilmiş object ile kabul edilmiş filter ayrılırDocument branch’inde title yerine sıradan display object verilince geçerli JSON’dan uygulamanın beklediği türe geçiş durur. Data owner’a query iletilmez ve önceki row listesi yeni bir başarı gibi gösterilmez. Bu inert failure, parser acceptance ile operation acceptance arasındaki farkı öğretir. Query count=0 ve result null birlikte kanıttır; yalnız ekranda bir error mesajı olması yeterli değildir.
WEB-18.S01 · Red · SQL ve NoSQL’de query/data ayrımı ↗Query factory’yi küçük ve açık tutUygulamanın public catalog factory’si closed field set, scalar title ve sort enum’unu doğrular. Kabul edilen id/title seçimleri yalnız iki sabit SELECT’e bağlanır. Value’lar sqlite3’ye tuple olarak verilir; document branch’inde uygulamanın belirlediği yeni equality filter oluşturulur. Client object’i copy etmek tek başına validation değildir. Type ve allowed field kararı, query builder’ın output’undan önce tamamlanır.
WEB-18.S01 · Blue · SQL ve NoSQL’de query/data ayrımı ↗Failure, scope ve evidence aynı kayıtta bulunmalıKabul edilebilir intent, seçilen statement/filter, query count ve projected result ayrı alanlar olarak tutulur. Rejection result null üretir; kabul edilmiş fakat eşleşmeyen arama [] üretir. Intent eksikse NOT-COMPUTED olur. Bu küçük ayrım incident review’de önemlidir: permission kararı, database connectivity failure ve gerçekten bulunamayan resource aynı kayıt altında görünmemelidir. Public visibility örneğin sabit scope’udur; tenant erişimi yaptığımız iddia edilmez.
WEB-18.S01 · Blue · SQL ve NoSQL’de query/data ayrımı ↗inputsSıradan typed intent; client’ın yazdığı query syntax değildir.
WEB-18.S01 · SQL ve NoSQL’de query/data ayrımı ↗statements / filterUygulamanın belirlediği yapı ve sabit public scope.
WEB-18.S01 · SQL ve NoSQL’de query/data ayrımı ↗queriesTamamlanan aramaların sayacı; reddedilen dalda0.
WEB-18.S01 · SQL ve NoSQL’de query/data ayrımı ↗rowsTamamlanan projection: sonuç yoksa null, kabul edilen aramada eşleşme yoksa [] olur.
WEB-18.S01 · SQL ve NoSQL’de query/data ayrımı ↗Cache hangi işi tekrar etmez?Application cache, daha önce hesaplanan veya başka bir owner’dan okunan sonucu yeniden kullanır. Atlas public Tea note’u ilk kez isterken cache miss olur: application, authoritative note store’dan version=1 ve title alanını okur, bu representation’ın kopyasını cache’e koyar ve sonucu kullanır. Sonraki hit aynı key için saklanan değeri döndürür; store’a ikinci read yapılmaz. Örnekte bu fark read counter ile görünür. Daha az read yapılması latency’nin ölçüldüğü veya her workload’un hızlandığı anlamına gelmez. Cache’e raw object, query result veya computed view konabilir; bunların kapsamı aynı değildir.
WEB-19.01 · Core · Application cache ve invalidation ↗Invalidation hangi revision’ı korur?Cache-aside write akışında önce authoritative update commit edilir, sonra ilgili cache entry invalidate edilir. Invalidate önce yapılırsa aradaki reader eski committed değeri yeniden cache’e doldurabilir. Doğru sıra da her topology için tam consistency garantisi değildir: başka writer, geciken read veya başka instance’ın local cache’i eski representation’ı geri getirebilir. TTL, eski değerin kullanılabileceği süreyi sınırlayabilir; expiry’den önce her read’in newest state’i alacağını garanti etmez.
WEB-19.01 · Core · Application cache ve invalidation ↗Hit ile freshness farklı iddialardırCache incelemesinde yalnız hit ratio’ya bakma. Artifact cache revision’ını ve authoritative revision’ı ayrı tutar; eski bir kopya hâlâ hit olabilir. Öğrencinin sorusu “entry var mı?”dan sonra “hangi representation, hangi revision ve ne kadar staleness kabul ediliyor?” olmalıdır. Eski computed view ile alınan karar yanlış olabilir. TTL’yi current permission veya newest state kontrolünün yerine koymak bu sınırı kaybettirir.
WEB-19.01 · Red · Application cache ve invalidation ↗Error’ı database absence’a çevirmeCache unavailable olduğunda get işlemi error verir; miss üretmiş sayılmaz. Public-read fallback store’dan sonuç alabilirse application o owner’ın representation’ını kullanır. Cache population’ın başarısız kalması bu store sonucunu yok etmez. Store da unavailable olduğunda boş not üretmek ise bilinmeyen bir durumu uydurma bir record’a dönüştürür. Fallback’in kaynak tüketimi ve retry davranışı kendi policy’sine göre ayrıca değerlendirilmelidir.
WEB-19.01 · Red · Application cache ve invalidation ↗Cache contract’ı gözlenebilir olsunBuradaki kanıtın üreticisi yerel cache adapter’ı ve note store okumasıdır; error, returnedVersion ve readCount bu örneğin alanlarıdır, hazır Redis log alanları değildir. Cache key’in hangi representation ve revision’ı tanımladığını açıkça yaz. Application’a verilen object’in cache içinde saklanan object ile aynı mutable referans olması istenmiyorsa kopyalama sınırını da tanımla. Atlas’ın ilk miss’i authoritative readCount’u artırır; sonraki hit artırmaz. Bu sayaç seçilen adapter’ın read sayısıdır, Redis statistics veya latency ölçümü değildir. Cache’in authoritative record owner olmadığı ayrımı korunur.
WEB-19.01 · Blue · Application cache ve invalidation ↗Commit, invalidate ve refill’i ayrı izleNormal update’de store version=2’ye commit olur, invalidate entry’yi kaldırır ve sonraki read yeni revision’ı cache’e doldurur. Her adım kendi owner state’ini değiştirir; başarılı invalidation cross-owner atomic transaction değildir. Geç candidateVersion=1 reddedildiğinde cache boş kalır. Fresh read’den sonra version=2 görülür. Son değere bakmakla yetinmeyip bu geçişlerin sırasını ve decision alanlarını da incele.
WEB-19.01 · Blue · Application cache ve invalidation ↗normalMiss/hit’in authoritative read count’u.
WEB-19.01 · Application cache ve invalidation ↗update/lateFillCommit/invalidate/refill ve serialized version guard.
WEB-19.01 · Application cache ve invalidation ↗error/bothUnavailableError fallback owner ve default state yokluğu.
WEB-19.01 · Application cache ve invalidation ↗selectorSynthetic stale-fill acceptance kararı.
WEB-19.01 · Application cache ve invalidation ↗Queue işi ne zaman, kim için saklar?Producer bir iş tanımını message olarak hazırlar. Atlas’ta job-note-1, public tea notunun indexlenmesini ister. Queue bekleyen işi tutar; consumer delivery’yi alır; worker application logic’i çalıştırır. Bu roller aynı process içinde veya ayrı service’lerde bulunabilir. Buradaki worker bir background application bileşenidir; browser Web Worker veya Service Worker API’si değildir. Queue’ya iş koymak, business sonucun oluştuğu veya HTTP caller’ın sonucu aldığı anlamına gelmez.
WEB-19.02 · Core · Queue, producer, consumer ve worker ↗Ack, commit ve duplicate hangi sınırı geçer?Publisher confirm, producer’ın broker’a publication sonucuyla ilgilidir. Consumer acknowledgement ise consumer delivery için ayrı bir sınırdır. Hiçbiri kendiliğinden application’ın business transaction sonucunu denetlemez. Atlas’ın manual-ack politikası önce result ile processed-job marker’ını aynı SQLite transaction’ında commit eder, sonra queue adapter’a ack verir. Ack, queue’nun inflight state’ini kaldırır. Erken ack verilip worker result’u kaydetmeden durursa queue artık işin beklediğini bilmez.
WEB-19.02 · Core · Queue, producer, consumer ve worker ↗Queue state business state değildirAccepted, inflight, business committed ve queue acked ayrı durumlardır. Erken ack dalında queueOutstanding=0 olmasına rağmen resultRows=0 kalır. Boş queue, tamamlanmış business işi kanıtlamaz. “Done” mesajı veya sayaç hangi owner’ın hangi işleminin bittiğini açıklamıyorsa öğrenci gerçek completion sınırını kaybeder.
WEB-19.02 · Red · Queue, producer, consumer ve worker ↗Idempotency marker hangi işi kapsar?Marker jobId üzerinden business database’de tutulur. Marker ve result farklı transaction’larda yazılsaydı aradaki failure yeni bir gap yaratabilirdi. Örnekte ikisi aynı transaction’da hazırlanır; rollback dalında independent read ikisinin de olmadığını gösterir. Marker seçilen job kimliğini kapsar. Başka operation purpose veya external effect için aynı korumanın geçerli olduğu ayrıca gösterilmelidir.
WEB-19.02 · Red · Queue, producer, consumer ve worker ↗Completion ve retry policy açık olsunDelivery sayısını yerel queue adapter’ı, result ile processed marker’ı bağımsız SQLite SELECT üretir. Aynı jobId ile eşleştirilen bu alanlar broker telemetry’si veya yakalanmış paket değildir. Worker, kind=index-public-note ve noteId=tea için bilinen message schema’sını değerlendirir. Delivery alınca inflight state oluşur; business commit sonrası manual ack bunu kaldırır. Independent SELECT ile result ve processed marker’ın aynı job’a ait olduğu incelenir. Queue state’ini database sonucu yerine kullanma; code execution ile message parsing’i de karıştırma.
WEB-19.02 · Blue · Queue, producer, consumer ve worker ↗Outbox ve bounded work farklı kontrollerdirProducer note update’i ile outbox event’ini aynı transaction’da commit eder; rollback olmuş iş yeni event bırakmaz. Relay yalnız committed pending row’ları publish eder. Publish sonrası sent marker gecikmesi duplicate bırakabileceğinden consumer aynı job’un effect’ini ayrıca sınırlar. External effect’i bu transaction’a dahil etmek gerekiyorsa onun owner’ı ve failure sınırı da tasarıma eklenir.
WEB-19.02 · Blue · Queue, producer, consumer ve worker ↗jobKnown public-note job schema; inert data.
WEB-19.02 · Queue, producer, consumer ve worker ↗normal/redelivery/earlyAckBusiness result ile delivery/ack ayrı outcomes.
WEB-19.02 · Queue, producer, consumer ve worker ↗outboxSame database intent commit ve finite relay gap.
WEB-19.02 · Queue, producer, consumer ve worker ↗selectorSynthetic early acknowledgement boundary.
WEB-19.02 · Queue, producer, consumer ve worker ↗Due time bir sonuç değil, başlangıç koşuludurBir scheduled job, belirli bir schedule slot için iş başlatma niyetidir. Zamanının gelmesi, scheduler’ın bunu fark etmesi, worker’ın başlaması ve sonucun commit edilmesi ayrı olaylardır. Atlas örneğinde due=10, observed=12 ve finished=13 kullanılır. Bunlar küçük bir logical clock’un değerleridir. İşin zamanı 10’da gelmiş, 12’de gözlenmiş ve normal dalda sonuç 13’te oluşmuştur. Yalnız due alanından sonuç var diyemezsin; yalnız started alanından da işin bittiğini çıkaramazsın.
WEB-19.03 · Core · Scheduled jobs ve async processing ↗Async acceptance request dışındaki işi teslim etmezAsync processing, caller’ın işi devredip final sonucu beklemeden kabul yanıtı almasına izin verir. Örneğin AWS Lambda asynchronous invocation, event’i queue’ya koyabilir ve function’ın sonucu henüz yokken başarılı kabul yanıtı dönebilir. Caller burada devretme sonucunu öğrenmiştir; function’ın business sonucunu öğrenmemiştir. Atlas’ın kayıtlarında da admission, pending, running ve succeeded/failed durumları ayrı tutulur. Kabul edilmiş bir iş daha sonra başarısız olabilir. HTTP 202 seçildiğinde de kabul, final sonuç anlamına gelmez.
WEB-19.03 · Core · Scheduled jobs ve async processing ↗Timer sayacı business completion değildirBir timer tick veya scheduler log kaydı, en fazla trigger’ın gözlendiğini gösterebilir. İşin kalıcı sonucu için result owner’dan başka bir gözlem gerekir. Dersin kaydı due, observed, admitted, started ve resultRows alanlarını bu nedenle ayırır. due=10 ve observed=14 dalında policy işe başlama izni vermez. Kabul sonrası hata dalında ise admitted=true olmasına rağmen resultRows=0 kalır. İkisini yalnız “iş yok” diye etiketlemek, ilkinin admission kararını ve ikincinin execution hatasını görünmez yapar.
WEB-19.03 · Red · Scheduled jobs ve async processing ↗Duplicate event aynı effect olmak zorunda değilAynı schedule slot için iki trigger gelmesi, seçilen ürünün davranışı içinde mümkün olabilir. İki event’in jobId alanı aynıysa iki ayrı business operation oldukları söylenemez. Atlas worker’ı processed marker ile sonucu aynı transaction’da tutar. İkinci event mevcut marker’ı bulduğunda aynı effect’i tekrar yazmaz. Bu marker’ın kapsamı seçilen job kimliğidir; başka bir purpose veya slot aynı operation sayılmaz. Event sayısı ile effect sayısını ayrı okuyarak neyin tekrarlandığını belirlersin.
WEB-19.03 · Red · Scheduled jobs ve async processing ↗Lifecycle ledger admission’dan result’a kadar sürsünBu örnekte due/observed/admitted alanlarını logical scheduler ve dispatcher, resultRows ile processedRows alanlarını ayrı SQLite okuyucusu üretir. Aynı slot ve jobId ile eşleştirilen kayıtlar gerçek cloud scheduler log’u değildir. Lifecycle kaydında schedule slot, original due, observed start, admission kararı ve result owner açıkça ayrılmalıdır. Bu örneğin maxStartAge=3 politikasında observed=13 kabul edilir, observed=14 atlanır. Bu sınırı başka bir scheduler’ın default’u gibi kullanamazsın. Caller’ın aldığı yanıt yalnız admission ise, final sonucu sorgulayan sonraki status isteği veya notification aynı job’un result owner’ına dayanmalıdır. İlk yanıtın başarı kodu, sonucun tamamlandığını kendi başına söylemez.
WEB-19.03 · Blue · Scheduled jobs ve async processing ↗Miss, failure ve retry ayrı branch’lerdirLate dalında job kabul edilmez ve result oluşmaz. Kabul edilmiş failure dalında ise lifecycle failed kalır; result ve marker transaction’ı rollback edilir. Duplicate dalında aynı job’un committed marker’ı bulunur ve resultRows=1 korunur. Bunlar farklı sonuçlardır ve ayrı raporlanmalıdır. Compensation, retry budget ve kaçırılmış schedule için catch-up davranışı gerçek uygulamanın politikasıdır. Bir dalın başarılı olması, başka bir dalın aynı koşullarda çalıştığı anlamına gelmez.
WEB-19.03 · Blue · Scheduled jobs ve async processing ↗scheduleİşin schedule slot’u, zamanı ve kabul edilen en büyük başlangıç gecikmesi.
WEB-19.03 · Scheduled jobs ve async processing ↗normal/late/failureİşe başlama izni ile kalıcı result ayrı gösterilir; late dalı kabul edilmez, failure dalı kabulden sonra başarısız olur.
WEB-19.03 · Scheduled jobs ve async processing ↗duplicateAynı job kimliği için event sayısı ile business effect sayısını karşılaştırır.
WEB-19.03 · Scheduled jobs ve async processing ↗selectorKabul edilmiş ama başarısız bir işin yanlışlıkla başarılı raporlanmasını arayan öğretim kontrolü.
WEB-19.03 · Scheduled jobs ve async processing ↗Bir read sonraki use için söz vermezApplication public notu revision=1 olarak okur. Operation uygulanana kadar authoritative owner’daki not revision=2’ye değişebilir. TOCTOU, check sırasında bilinen state ile use sırasındaki state arasındaki bu boşluğu anlatır. Order-dependent davranış, lost update ve invariant ihlali aynı sonuç değildir. Atlas örneği sıradan bir revision değişimi sonrasında guarded update’in eski expectation’ı reddetmesini gösterir.
WEB-19.S01 · Core · Races, transactions ve idempotency ↗Retry kimliğinin result ve purpose’u vardırCaller completion response’unu alamadığında operation’ın hiç çalışmadığını bilemez. Atlas’ta note rename commit olur fakat caller’ın bilgisi UNKNOWN kalır. Aynı request alias ve aynı parameters ile retry committed result’u yeniden kullanır. Idempotency scope caller alias, operation purpose ve key’den oluşur; normalized note ID/title parameters da kaydedilir. Aynı scope/key farklı parameters ile gelirse conflict oluşur; önceki result başka intent adına sunulmaz.
WEB-19.S01 · Core · Races, transactions ve idempotency ↗İlk check’in bilgisi sınırlıdırArtifact readVersion=1 ile use sırasındaki currentVersion=2’yi ayrı gösterir. Yanlış varsayım eski observation’ın hâlâ current state olduğunu kabul etmektir. Sonuç yeni title’ın eski karar tarafından ezilmesi olabilir. Doğru guard dalında affectedRows=0 ve current state korunur. Öğrenci expected revision’ın hangi authoritative statement’ta değerlendirildiğini ve yanlış eşleşmede ne değişmediğini inceler.
WEB-19.S01 · Red · Races, transactions ve idempotency ↗UNKNOWN response failed operation değildirCaller’ın yanıt alamaması ile store’un rollback etmesi farklı sonuçlardır. Commit olmuş iş aynı scope/key/parameters ile tekrar sorulduğunda stored result kullanılabilir. Key’i değiştirmek yeni intent anlamına gelebilir; aynı key’i farklı title veya purpose için kullanmak da contract kararı gerektirir. Idempotency key identity veya permission sağlamaz.
WEB-19.S01 · Red · Races, transactions ve idempotency ↗Invariant authoritative statement’ta değerlendirilsinBefore/after revision ve affectedRows, yerel SQLite statement’ı ile ayrı SELECT okuyucusundan gelir; caller’ın UNKNOWN bilgisi ise ayrıca verilen senaryo koşuludur. Atlas invariant’ı title’ın yalnız current revision expected revision’a eşitken değişmesidir. Expected=1/current=2 mismatch rowcount=0 üretir ve yeni title/revision korunur. Before/after değerleri independent SELECT ile karşılaştırılır; UI kopyasının kendiliğinden güncellendiği varsayılmaz. Transaction visibility ve operation condition ayrı kontrollerdir.
WEB-19.S01 · Blue · Races, transactions ve idempotency ↗Mutation ile saved result birlikte commit edilsinCaller-demo / rename-public-note / request-a scope’u normalized tea ve Updated note parameters’ını saklar. Normal response ile aynı-parameter retry aynı result’u döndürür; mutationCount=1 kalır. Alias bu öğretim kaydındaki request kimliğidir, credential değildir. Başka purpose için aynı key farklı namespace’e ait olabilir; aynı purpose içinde parameter mismatch ise ayrı conflict’tir.
WEB-19.S01 · Blue · Races, transactions ve idempotency ↗invariantFixed guarded SQL ve observed stale rejection.
WEB-19.S01 · Races, transactions ve idempotency ↗scopeCaller/purpose/key ile normalized parameters.
WEB-19.S01 · Races, transactions ve idempotency ↗retryUnknown/rollbackCommit korunması ile rollback ayrı outcomes.
WEB-19.S01 · Races, transactions ve idempotency ↗selectorSynthetic stale mutation acceptance kararı.
WEB-19.S01 · Races, transactions ve idempotency ↗Monolith, layer ve tier hangi soruya cevap verir?Monolith, uygulamanın temel davranışlarının birlikte geliştirilen ve yayımlanan bir deployment unit içinde bulunmasıdır. Bu birim birden fazla module veya project içerebilir; aynı birimin kopyaları farklı process ve makinelerde çalışabilir. Database ve diğer bağımlılıklar ayrı yerde olabilir. Bu yüzden monolith etiketinden bütün sistemin tek dosya, tek process veya tek makine olduğu sonucunu çıkarmayız.
WEB-20.01 · Core · Monolith, three-tier ve SPA ↗İlk HTML, API sonucu ve DOM aynı şey değildirSSR akışında server, Tea note verisini okuyup title’ı HTML içindeki h1 alanına yerleştirir. Browser bu HTML geldikten sonra DOM’u kurar. Buradaki SPA başlangıcı ise bir note container ve Loading metni getirir; veriyi sonra ister. Bu yalnız seçtiğimiz başlangıç biçimidir. Bir SPA server rendering veya hydration da kullanabilir ve ilk HTML anlamlı içerik taşıyabilir.
WEB-20.01 · Core · Monolith, three-tier ve SPA ↗Çizimdeki kutu bir güven sınırını kanıtlamazFrontend, backend ve data kutuları çizmek, authorization’ın server’da uygulandığını veya database’in ağda izole olduğunu göstermez. Aynı process içindeki service çağrısı ile başka server’a giden request farklı mekanizmalardır. Atlas’ın yerel service ve data çağrılarında packet hareketi yoktur; browser ile server arasındaki mesajlar ayrı gösterilir.
WEB-20.01 · Red · Monolith, three-tier ve SPA ↗Başarılı başlangıç, başarısız API’yi gizlemesinSPA shell ulaştığında Loading görünmesi normaldir. Sonraki note API 404 dönerse başlangıç document’ı yine gelmiştir, fakat note sonucu kullanılamaz. Promise’in fulfilled olması başarılı HTTP status veya geçerli note verisi demek değildir. Beklenen note nesnesi bulunmadan title’ı başarıyla yüklenmiş gibi sunmak bu iki sonucu karıştırır.
WEB-20.01 · Red · Monolith, three-tier ve SPA ↗Kod sorumluluğunu fiziksel yerleşimden ayırSource text’i yerel HTML üreticisi ve HTMLParser okuması sağlar; API status/body kaydı aynı örneğin ayrı representation’ıdır. Bu alanlar canlı browser DOM veya packet capture kaydı değildir. Her rolün kararını yaz: browser görünümü oluşturur; server endpoint’i ve ilk HTML’i üretir; service uygulama davranışını yürütür; data owner kaydı sağlar. Sonra bu rollerin hangi process ve deployment unit içinde olduğunu ayrıca kaydet. Aynı process içindeki çağrıları ağ isteği gibi çizmek hem gecikmeyi hem güven sınırını yanlış anlatır.
WEB-20.01 · Blue · Monolith, three-tier ve SPA ↗Mesajın ulaşmasını ve görünümün değişmesini ayrı izleRequest hazırlanırken hedefi browser bilir; server ancak mesaj ulaştığında öğrenir. Response hazırlanırken browser’ın Loading durumu korunur. Response ulaştıktan sonra status, body ve note biçimi kontrol edilir; en son DOM text değişir. 404 dalında response ulaşır fakat note title güncellemesi yapılmaz. Hareketi kapattığında da aynı durumları ve sonucu okuyabilmelisin.
WEB-20.01 · Blue · Monolith, three-tier ve SPA ↗rolesFrontend, backend ve data owner sorumluluklarını ayırır; logical layer sayısı fiziksel tier sayısı değildir.
WEB-20.01 · Monolith, three-tier ve SPA ↗ssr/spaSSR ilk HTML’e title koyar; seçilen SPA önce Loading gösterir, sonra API representation’ını kullanır.
WEB-20.01 · Monolith, three-tier ve SPA ↗apiFailureStartup HTML başarılı olsa da note API 404 dönebilir. Response gelmesi başarılı note parsing’i değildir.
WEB-20.01 · Monolith, three-tier ve SPA ↗limits/selectorKaynak HTML/JSON ve beklenen görünüm modeliyle sınırlıdır; gerçek HTTP, Fetch veya DOM çalıştırma kaydı değildir.
WEB-20.01 · Monolith, three-tier ve SPA ↗Service sınırı bir URL’den büyüktürMicroservices, her fonksiyona ayrı HTTP endpoint açmak değildir. Bir service belirli bir iş alanının contract, release ve veri sorumluluğunu taşır. Notes service note representation’ını, index service arama özetini yönetebilir. Bunlar farklı mantıksal sorumluluklardır; aynı makinede mi, farklı process veya bölgelerde mi çalıştıkları bundan anlaşılmaz. Bağımsız deployment bir mimari karardır; route sayısı bunu kanıtlamaz.
WEB-20.02 · Core · Microservices, gateway ve intermediaries ↗Gateway, load balancer, CDN ve WAF farklı kararlar verirAPI gateway bir public contract’ın arkasındaki service’e routing yapabilir; authentication, quota veya transformation da uygulayabilir. Load balancer seçilen hizmetin instance’ları arasında iş dağıtır. Layer 4 ve HTTP method/path bilgisiyle çalışan Layer 7 aynı görünürlüğe sahip değildir. Reverse proxy dışarıda server gibi görünürken içeride başka bağlantının client’ı olabilir. Her bağlantıda isteği kimin aldığı ve sonucu hangi resource owner’ın ürettiği ayrı izlenir.
WEB-20.02 · Core · Microservices, gateway ve intermediaries ↗Bir hop’un başarısı bütün akışın başarısı değildirGateway’in route bulması, seçilen replica’nın kullanılabilir response vereceğini veya index’in beklenen sonucu üreteceğini kanıtlamaz. Bu varsayım bir dependency hatasında eski ya da eksik veriyi tamamlanmış sonuç gibi sunabilir. Kararı hangi service verdi, caller hangi response’u gerçekten aldı? Normal sahnenin gateway’de bitmesi bu soruyu görünür kılar; browser’a teslim edilmemiş sonucu tamamlandı sayamayız.
WEB-20.02 · Red · Microservices, gateway ve intermediaries ↗Intermediary kararı domain yetkisi vermezEdge allow ve gateway route kararı domain authorization değildir. Private bir service’te caller identity, audience, operation ve object ownership güvenilir bağlamda değerlendirilir. Header veya internal görünen service adı tek başına identity kanıtı olmaz. TLS termination noktaları değişiyorsa her bağlantının peer trust ve confidentiality sınırı ayrıca incelenir.
WEB-20.02 · Red · Microservices, gateway ve intermediaries ↗Kutunun adından önce verdiği kararı yazReplica seçimini yerel routing adapter’ı, originCalls ve birleşik category sonucunu aynı örneğin service kaydı üretir; JSON roundtrip yalnız bu alanları yeniden okur. Edge hangi representation’ı yeniden kullanabilir, gateway hangi service contract’ını seçer, load balancer hangi replica’yı uygun bulur, notes hangi veriyi yönetir? Aynı appliance birkaç rol taşısa da kararların sorumluluğu ayrı kalır. Public read için method, target ve service amacı görünür olsun. Request tracing identifier ilişkilendirme içindir; secret veya yetki anahtarı değildir.
WEB-20.02 · Blue · Microservices, gateway ve intermediaries ↗Cache, policy ve routing sonuçlarını ayrı doğrulaCache-hit dalında key ve freshness koşulunu; maintenance dalında block kararını; origin-unavailable dalında forwarding yapılmadığını incele. Bunlar aynı hatanın üç görünümü değildir. Sentetik kayıt seçilen replica, origin call sayısı ve category sonucunu ayrı gösterir. Yerel modelin sonucu bir CDN veya WAF ürününün çalıştırıldığı anlamına gelmez.
WEB-20.02 · Blue · Microservices, gateway ve intermediaries ↗normalNotes ile index sonucu birleştirilip gateway’e ulaşır. Browser’ın aldığı sonuç bu kayıtta gösterilmez.
WEB-20.02 · Microservices, gateway ve intermediaries ↗cacheHit/noOriginEdge cache reuse ile hazır instance seçimi farklı kararlardır. Cache hit sırasında origin’e hiç gidilmemiş olabilir.
WEB-20.02 · Microservices, gateway ve intermediaries ↗policyClosed/rolesMaintenance policy ile service routing ayrı rollerdir. Bu public örnekte private object permission doğrulanmaz.
WEB-20.02 · Microservices, gateway ve intermediaries ↗selector/limitsÖğretim kaydında seçilebilir instance yokken forwarding yapılması aranır. Gerçek CDN, gateway veya WAF sonucu değildir.
WEB-20.02 · Microservices, gateway ve intermediaries ↗Image, çalışan instance ve kalıcı veri ayrı ömür taşırContainer, uygulama process’ini bağımlılıkları ve seçilen isolation mekanizmalarıyla çalıştırır. Image, bu image’dan başlayan instance ve uygulamanın kalıcı verisi ayrı nesnelerdir. Linux container’ları tipik olarak host kernel’i paylaşır; Docker Desktop gibi ortamlarda container host bir VM içinde olabilir. Isolation’ın kapsamı runtime, privilege ve mount kararlarına bağlıdır. Container kullanmak uygulamanın authorization kararını çözmez.
WEB-20.03 · Core · Containers, Kubernetes, serverless ve edge ↗Serverless ve edge’de de verinin sorumlusu vardırServerless, server bulunmadığı anlamına gelmez; execution environment’ın sağlanması ve ömrü platform tarafından yönetilir. AWS Lambda’nın default environment örneğinde Init, Invoke ve Shutdown aşamaları vardır. Platform aynı environment’ı tekrar kullanabilir, fakat memory’nin her zaman korunacağına güvenemeyiz. Farklı function ürünlerinin concurrency ve persistence sözleşmeleri farklı olabilir.
WEB-20.03 · Core · Containers, Kubernetes, serverless ve edge ↗Running, ready ve tamamlanmış sonuç farklıdırReplica’nın process’i başlamış ama ilk veri yüklemesi bitmemiş olabilir. Running’i ready saymak, henüz kullanılamayan instance’a trafik göndermeye yol açar. Örnekte runtime-b vardır ve çalışıyordur, fakat ready=false iken seçilmez. ready=true olduktan sonra public read yapılır. Sahnenin kararı bu hazır olma koşuluna bağlıdır; gerçek kubelet probe sonucu gösterilmez.
WEB-20.03 · Red · Containers, Kubernetes, serverless ve edge ↗Geçici memory’yi kalıcı kaynak sanmaHer invocation’ın temiz memory ile başladığını varsaymak, yeniden kullanılan environment’da request verilerini karıştırabilir. Memory cache’i kalıcı kaynak saymak ise replacement sonrası veri kaybı veya replica’lar arasında farklı sonuçlar üretir. Public Tea note ve counter örneğinde cache’in amacı görünürdür; kalıcı note için ayrı data owner’a dönülür.
WEB-20.03 · Red · Containers, Kubernetes, serverless ve edge ↗Replacement sırasında ne değişiyor?Image version, runtime identity, readiness ve kalıcı veri referansını ayrı kaydet. Replacement sırasında yenilenen instance ile korunan veriyi bu şekilde ayırabilirsin. Volume seçimi yalnız bir storage location tercihi değildir; retention, backup, access control ve silme sorumluluğu da belirlenmelidir. SQLite dosyasını düzgün kapatıp yeniden okumak, host crash veya replication dayanıklılığını ölçmez.
WEB-20.03 · Blue · Containers, Kubernetes, serverless ve edge ↗Request sonucunu platform isminden çıkarmaFunction veya edge handler için invocation girdisini, response status/body’yi ve kalıcı effect’in sorumlusunu ayrı tut. Yeniden kullanılan connection ve cache’in hâlâ geçerli olup olmadığını değerlendir. Timeout, concurrency ve disk limitleri seçilen ürünün sözleşmesine bağlıdır. Atlas’ın memory counter artışı bu limitleri veya production performansını ölçmez.
WEB-20.03 · Blue · Containers, Kubernetes, serverless ve edge ↗replacementYeni runtime boş memory cache ile başlar; ayrı storage owner’daki committed not yeniden okunabilir.
WEB-20.03 · Containers, Kubernetes, serverless ve edge ↗warmSayaç aynı execution environment’da artar, başka environment’da yeniden başlar. Global durable sequence değildir.
WEB-20.03 · Containers, Kubernetes, serverless ve edge ↗edgeOutput’a eklenen servedBy metadata’sı coğrafi location veya signed attestation kanıtı değildir.
WEB-20.03 · Containers, Kubernetes, serverless ve edge ↗selector/limitsReadiness kararı ile routing seçimi incelenir. Bu ledger gerçek container veya Kubernetes çalıştırması değildir.
WEB-20.03 · Containers, Kubernetes, serverless ve edge ↗Provider’a hangi sorumluluğu veriyoruz?Third-party service, dışarıda yönetilen bir capability’yi API, webhook, library veya browser integration üzerinden kullanmaktır. SaaS dependency’de availability, quota, değişim ve retention kararlarının bir kısmı provider sözleşmesine bağlıdır. Ürün adı veya başarılı demo her kullanım amacına uygunluğu kanıtlamaz. Hangi veri dışarı çıkıyor, hangi sonuç geri geliyor ve uygulama bu sonucu ne için kullanıyor?
WEB-20.04 · Core · Third-party services ve trust boundaries ↗Response almak, kabul etmek ve commit etmek ayrı olaylardırAdapter 200 application/json response’u parse edebilir ama veri türleri, hedef nesne ve kullanım amacı henüz kontrol edilmemiş olabilir. Normal dalda id=tea, title=Tea note ve integer revision=1 kabul edilir. Sonra yerel SQLite write ve COMMIT gelir. Bağımsız reader yeni title’ı ancak commit sonrasında görür. Sahne response arrival, validation ve commit’i ayrı adımlarda gösterir.
WEB-20.04 · Core · Third-party services ve trust boundaries ↗Güvenilir kanal, doğru uygulama verisi demek değildirTLS, peer ve taşınan verinin bütünlüğü için güven sağlar; title’ın doğru türde, doğru note’a ait veya doğru amaç için kullanılabilir olduğunu belirlemez. Provider tanındığı için veri kontrolünü kaldırmak, sıradan version değişiminde bile storage ve UI koşullarını bozabilir. Örnekte numeric title, string contract’ını geçemediği için mutation öncesinde durdurulur.
WEB-20.04 · Red · Third-party services ve trust boundaries ↗Hata ile bilinmeyen sonucu birbirine karıştırma200’ü schema validation saymak, error body’yi success body sanmak ve hiç response görmemek farklı durumlardır. Üçünde de eski title korunabilir, fakat nedenler aynı değildir. Kullanıcı aynı genel mesajı görse bile diagnostic category ayrılabilir. Contract mismatch, provider unavailable ve eksik gözlem ayrı değerlendirilerek mutation kararına bağlanır.
WEB-20.04 · Red · Third-party services ve trust boundaries ↗Integration contract’ını somut alanlarla tanımlaStatus/body gözlemini sabit yerel provider adapter’ı, commit görünürlüğünü ayrı SQLite connection üretir. Bunlar remote provider’ın gerçekten çalıştığına dair log veya network capture değildir. Provider identity, capability amacı, request veri sınıfı, beklenen status/media type, schema version ve yerel karar sorumluluğunu beraber kaydet. Contract değişince yalnız başarılı örneği değil schema drift ve provider error durumlarını da incele. Atlas, istenen id ile response id’sini, string title’ı ve integer revision’ı kontrol eder. Kullanılmayan extra fields saklanmaz. Bu kontrol title’ı bütün output context’leri için otomatik güvenli yapmaz.
WEB-20.04 · Blue · Third-party services ve trust boundaries ↗Karar nedenini kullanıcı etkisine bağlaContract mismatch için success gösterme; unavailable için uygulamanın hata sonucunu üret; unknown durumda remote completion iddiası kurma. Eski local title gösterilecekse nereden geldiği ve güncelliği korunmalıdır. Stale fallback bir policy seçimi olarak açık olmalıdır. Genel kullanıcı hatası ile iç diagnostic category ayrılabilir; provider nesnesinin tamamını browser’a veya log’a kopyalamak gerekmez.
WEB-20.04 · Blue · Third-party services ve trust boundaries ↗contractPublic title için versioned provider contract’ı tanımlar. Provider’ın private user permission kararı verme authority’si yoktur.
WEB-20.04 · Third-party services ve trust boundaries ↗normal/schemaDriftHTTP response, schema kabulü ve local commit ayrı sonuçlardır. 200 status ile title’ın doğru türde olması aynı koşul değildir.
WEB-20.04 · Third-party services ve trust boundaries ↗providerError/unknownGözlenen 503 ile hiç response gözlenmemesi farklı bilgi durumlarıdır; local notun değişmemesi bu farkı silmez.
WEB-20.04 · Third-party services ve trust boundaries ↗selector/limitsYerel adapter, response parsing ve local SQL kapsamıdır. Gerçek SaaS çağrısı veya network deadline ölçümü değildir.
WEB-20.04 · Third-party services ve trust boundaries ↗HTTP client kimin yetkisiyle çalışır?Browser bir sayfanın JavaScript isteğini kendi origin ve credential kuralları içinde yürütür. Server-side fetch ise uygulama sürecinin network erişimiyle çalışır. Aynı fetch adı bu iki ortamın aynı security boundary olduğu anlamına gelmez. Public catalog örneğinde öğrenci note-A seçer; server bu iş kimliğini kendi kayıtlı catalog endpoint’iyle eşler. Client genel bir URL veya server’ın taşıyacağı credential seçmez.
WEB-20.S01 · Core · Server-side fetch, SSRF boundary ve egress policy ↗URL, destination ve bağlantı tek karar zinciridirBu profile origin https://catalog.example.org, path /public-notes/note-A ve method GET server tarafından sabitlenir. URL parser protocol, hostname, port, pathname gibi bileşenleri ayırır; origin tek başına path iznini içermez. Aynı origin’deki /help geçerli bir URL olsa da bu işin endpoint’i değildir. Oluşturulan URL’nın tekrar parse edilmesi aynı onaylı bileşenleri üretmelidir; bileşenleri başka servise string olarak geçirirken parser tutarlılığı tasarımın parçasıdır.
WEB-20.S01 · Core · Server-side fetch, SSRF boundary ve egress policy ↗Egress ve yanıtın sınırıApplication allowlist hangi işin hangi service’e gitmesi gerektiğini ifade eder. Network egress kuralı sürecin izinli yollar dışına çıkmasını sınırlayan ayrı kontroldür. İkisini aynı boolean’a indirgemek ölçümün hangi katmanda yapıldığını gizler. Artifact’te destination ve egress için ayrı supplied evidence vardır; doğru URL ve onaylı destination, egress ret iken dispatch üretmez.
WEB-20.S01 · Core · Server-side fetch, SSRF boundary ve egress policy ↗Bozulan varsayım: input geçerli, hedef izinliRed perspective burada bir hedefe deneme göndermek yerine karar için gerekli şartları sorgular. note-A schema’ya uyabilir; yine de endpoint config’in approved origin ve path ile eşleşmesi gerekir. Onaysız docs.example.org sıradan bir documentation origin’idir; public olması bu catalog işinin destination’ı yapmaz. Unknown-origin branch hiçbir catalog mesajı veya title body üretmez.
WEB-20.S01 · Red · Server-side fetch, SSRF boundary ve egress policy ↗Kontrolün kaybolduğu katmanı bulmakİkinci soru önceki hop için verilen kararın yeni bir hop’a sessiz taşınıp taşınmadığıdır. Artifact redirect’i takip etmez; sıradan farklı documentation origin’i için yeni dispatch yoktur. Bu kayıt bir redirect uygulama testi değildir. Gerçek sistemde redirect gereksinimi varsa her hop’ın onaylı profile girdiği ve context aktarımının daraltıldığı ayrıca kanıtlanmalıdır.
WEB-20.S01 · Red · Server-side fetch, SSRF boundary ve egress policy ↗Endpoint’i iş kimliğinden oluşturmakBlue tasarımı client’a yalnız note-A gibi dar bir identifier verir. Server-owned registry bu identifier’ı scheme, origin, path ve method’u sabit bir profile bağlar. Bu profile gelen endpoint config’i bilinen URL parser ile ayrıştırılır ve onaylı bileşenlerle karşılaştırılır. Public title okumasında credential forwarding gerekmez; genel header setini başka service’e kopyalamak bu örneğin contract’ında yoktur.
WEB-20.S01 · Blue · Server-side fetch, SSRF boundary ve egress policy ↗Negatif kanıtı dispatch sayacıyla sınamakRegression tablosunda doğru config kabul edilir; onaysız origin, eksik destination evidence ve egress ret aynı şekilde catalog dispatch sayısını sıfır bırakır. Reddedilen okumada title body yoktur ve store üzerinde write yapılmaz. Geçerli URL ile geçersiz path için ayrı ordinary /help satırı da endpoint sınırının origin’den daha dar olduğunu gösterir. Pozitif branch sabit title projection’ı üretir.
WEB-20.S01 · Blue · Server-side fetch, SSRF boundary ve egress policy ↗profileServer’ın seçtiği origin, path ve method’u tanımlar. Bu örnekte gerçek DNS, TLS, HTTP veya firewall çalıştırılmaz.
WEB-20.S01 · Server-side fetch, SSRF boundary ve egress policy ↗rowsConfig eşleşmesi, destination onayı ve egress onayı ayrı koşullardır. Dispatch, body ve write sonuçları birlikte okunur.
WEB-20.S01 · Server-side fetch, SSRF boundary ve egress policy ↗componentChecksAynı origin’deki /help, onaylı public note endpoint’i değildir. Domain eşleşmesi tek başına endpoint izni vermez.
WEB-20.S01 · Server-side fetch, SSRF boundary ve egress policy ↗redirectLedgerOtomatik redirect takibi kapalıdır; başka origin için yeni destination kararı gerekir.
WEB-20.S01 · Server-side fetch, SSRF boundary ve egress policy ↗connectionEvidenceValidated ve connected address set ilişkisi yalnız bir alias olarak verilmiştir. Gerçek DNS sonucu ölçülmemiştir.
WEB-20.S01 · Server-side fetch, SSRF boundary ve egress policy ↗budgetByte, deadline ve redirect sınırlarını ayrı gösterir. Config değerleri gerçek runtime enforcement kanıtı değildir.
WEB-20.S01 · Server-side fetch, SSRF boundary ve egress policy ↗boundariesBrowser CORS, domain onayı ve URL parsing, server-side destination permission’ın yerine geçmez.
WEB-20.S01 · Server-side fetch, SSRF boundary ve egress policy ↗SPA, BFF ve SSR farklı işler yaparSPA client’ın navigation ve view state’ini yönetebilir; BFF o interface’e uygun server adapter’dır. SSR ilk HTML’i server’da oluşturur. Bu üç rol aynı deployment’ta bulunsa da biri diğerinin zorunlu adı değildir. Public notlar örneğinde BFF, catalog record’dan yalnız title seçer; mobil ve web interface’in ayrı ihtiyaçları varsa projection’ları farklı olabilir. Ortak domain permission yine ilgili service contract’ının parçasıdır.
WEB-20.S02 · Core · BFF, SSR, hydration ve server actions ↗Server’da üretilen veri ne zaman public olur?Server record title, internalReviewState ve serverOnlyContextAlias içerir. Son iki değer bu örnekte sır değildir; yine de public contract’ın dışındadır. Public projection açıkça {title: Tea & Bread} seçer. Bütün record’u serialize edip UI’da bazı alanları gizlemek aynı sınırı sağlamaz: browser’a giden alan browser verisi olmuştur. Server’da hesaplanmış olması delivered props’u yeniden private yapmaz.
WEB-20.S02 · Core · BFF, SSR, hydration ve server actions ↗Server action yeni bir entry point’tirSayfanın daha önce render edilmiş olması sonraki operation’ın current permission kanıtı değildir. Modern framework’lerde client’ın çağırdığı server function veya action, kendi input ve identity context’iyle server boundary’den yeniden geçer. Next.js guide bu ayrımı action içinde authn ve object permission ile açıklar. Bir action identifier, UI düğmesi veya client bundle’da görünürlük permission belgesi olarak kullanılmaz.
WEB-20.S02 · Core · BFF, SSR, hydration ve server actions ↗Bozulan varsayım: server üretimi private kalırRed incelemesi önce record’un projection’a geçerken ne kaybettiğini sorar. Tea & Bread görünümünü göstermek için internal review alanı veya service context alias’ı gerekmiyor. Eğer bu alanlar serializer’a dahil edilirse son kullanıcıya gösterilmemeleri veri boundary’sini geri getirmez. Burada karşılaştırılan iki object tamamen harmless’tır; gerçek secret çıkarma veya browser’dan başka sisteme taşıma yoktur.
WEB-20.S02 · Red · BFF, SSR, hydration ve server actions ↗Bozulan varsayım: entry point önceki gate’i miras alırBir sayfa için verilmiş permission kararının kapsamı o anki render talebidir. Action-read ve entry-denied aynı pagePreviouslyRendered değerini taşır ama farklı current action permission sonucuna sahiptir. İkinci satırda catalog’a mesaj gönderilmez. Current context eksikse önceki page state ile identity tahmin edilmez; bilinmeyen kanıt görünür biçimde null kalır ve delivery durur.
WEB-20.S02 · Red · BFF, SSR, hydration ve server actions ↗Minimal projection ve eşleşen initial stateBu kaydın üreticileri yerel JSON serializer, HTML bağlamına uygun encoder ve ilk title karşılaştırmasıdır; action gate alanları seçilmiş policy girdileridir. Gerçek React hydration veya server framework log’u ölçülmez. Blue contract server record ile public DTO’yu ayrı tutar. Public title projection’ı allowlist alanlarla oluşturulur; generic spread veya bütün record serialization yerine bu dar contract tercih edilir. Private projection kullanılan gerçek sistemde viewer context’e göre cache ayrımı gerekir; public title örneğinde private cache uygulanmaz. Cache’de yanlış actor’a ait hazır projection bulmak yeni permission yerine geçmez.
WEB-20.S02 · Blue · BFF, SSR, hydration ve server actions ↗Her operation için güncel karar kaydıAction contract’ı input schema, verified actor, action permission, object permission ve domain koşulları olarak yazılır. Sayfa render’ından gelen “zaten giriş yaptı” varsayımı bu listeyi kısaltmaz. Context yoksa no-dispatch; permission ret ise no-dispatch; kabul edilen public read yalnız title body üretir. Bu üç sonuç regression fixture’da ayrı reason ve evidence alanlarıyla izlenir.
WEB-20.S02 · Blue · BFF, SSR, hydration ve server actions ↗profilePublic title okumasının kapsamını gösterir. Gerçek framework, browser veya hydration çalıştırma kaydı değildir.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗rowsRender ve action entry’lerinde güncel actor, object ve action koşulları değerlendirilir; geçmiş render sonucu yeterli değildir.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗serverRecordServer record’ın bütün alanları public DTO’ya dahil edilmez. Internal context ile client’a verilecek title ayrı tutulur.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗publicProjectionClient’a yalnız title alanı verilir; dar projection diğer server alanlarını dışarıda bırakır.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗serializedPublicJSONPublic DTO’nun JSON representation’ıdır. Serialization client’a teslim edilen veriyi server-only yapmaz.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗publicHTMLTitle sabit HTML text context’inde gösterilir. HTML escaping ile JSON escaping aynı encoding değildir.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗serializationBoundaryEncoding enclosing context’e bağlıdır. Bu örnek inline script kullanmaz ve JSON’u evrensel HTML güvenliği saymaz.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗hydrationLedgerServer ve client initial title’ları karşılaştırılır. Bu eşitlik gerçek React hydration sonucu değildir.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗architectureSPA, BFF, SSR, hydration ve server action farklı sorumlulukları anlatır.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗cacheBoundaryPrivate projection yeniden kullanılacaksa viewer context ayrımı gerekir. Bu örnekte gerçek private cache yoktur.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗boundariesButton, action ID ve önceki render current permission değildir; teslim edilen veri artık client tarafından okunabilir.
WEB-20.S02 · BFF, SSR, hydration ve server actions ↗Workload ve end-user iki farklı actor’dırBir service’in kimliği, onun hangi end-user adına hangi action’ı yapabileceği ile aynı şey değildir. Notes API’nin Queue’ya kabul edilen workload olması, Duru adına tüm tenant verilerini okuma izni yaratmaz. Service connection identity’si uygun trust roots/issuer ve alıcı profile ile doğrulanır; user delegation ayrıca subject, tenant, purpose, audience, action ve object sınırlarına bağlanır. SPIFFE, workload identity ve onu kanıtlayan SVID kavramını tanımlar; belirli bir SPIFFE ID’nin notes.read permission’ı uygulama policy’sinin kararıdır. Bu derste credential veya SVID byte’ı yoktur. WorkloadVerifiedDeclared, seçilmiş fixture’ın bağımsız girdisidir; ders bu boolean’ı gerçek TLS veya token verification sonucu diye sunmaz. Böylece sender’ı tanıma, user assertion’a güvenme ve resource’a izin verme üç ayrı soruda kalır.
WEB-20.S03 · Core · Service identity ve async context propagation ↗Queue gecikmesi context’in anlamını değiştirirAsync job enqueue anında kabul edilmiş olabilir, ancak worker daha sonra farklı now veya policy revision altında çalışır. Bu nedenle job context’i trusted provenance ile taşınır ve worker kendi operation’ı için audience/purpose/time/action sınırlarını yeniden değerlendirir. Artifact public-note-read purpose’ını notes-worker audience’ına ve note-A object’ine bağlar. validUntil=200 için now=200 equality geçersizdir; bu profilin seçtiği boundary’dir. Purpose farklıysa user’ın adı ve tenant’ı doğru olsa bile read store’a gitmez. Context eksikse permissionUnknown olarak kaydedilir ve güvenli deny seçilir. Queue receipt veya ACK business success anlamına gelmez; bir job’ın geldiğini gösterir. Retries ve idempotency de yetki sağlamaz: aynı job’ın tekrar işlenmesini kontrol etmek ile actor/purpose doğrulamak farklı problemlerdir.
WEB-20.S03 · Core · Service identity ve async context propagation ↗Correlation context identity değildirTrace context, farklı component’lerdeki aynı işin izini ilişkilendirir. W3C traceparent/tracestate alanlarının amacı correlation’dır; bu alanlara sensitive user claim yerleştirilmez. Defterde trace-A yalnız okunur bir öğretim alias’ıdır, gerçek traceparent syntax’ı değildir. Alias’ın eşleşmesi workload, subject veya permission kanıtı üretmez. Authentication context ile tracing context ayrı field’larda, ayrı provenance ve retention kurallarıyla yönetilir. Yerel kopyalama işleminde yalnız approved job field’ları yeni object’e aktarılır; ana request object’ine referans taşımak başka bir işin state’ini karıştırabilir. AsyncLocalStorage gibi runtime araçları, tek process içindeki async continuation’larda context’i tutmaya yardımcı olur; network veya queue boundary’sinde identity assertion oluşturmaz. Deserialize edilmiş context’in yeniden güvenilir sayılması için alıcının kendi validation’ı gerekir.
WEB-20.S03 · Core · Service identity ve async context propagation ↗Serverless execution reuse ve least privilegeServerless olmak her invocation’ın yeni process olduğu anlamına gelmez. Execution environment tekrar kullanılabilir; SDK client veya static resource reuse ile request’e özel actor/context state’i birbirinden ayrılır. AWS Lambda’nın function code rehberi user data ve security açısından önemli event state’ini invocation’lar arasında saklamamayı önerir. Dersin yerel iki-context kontrolü Duru/job-A ile Ece/job-B’nin ayrı async store ve kopyalarda kaldığını gösterir; gerçek Lambda isolation testi değildir. Workload’ın platform permission’ı da minimum service rolüyle sınırlandırılır; user delegation o rolün yerine geçmez. Queue consumer’ın readNotes rolü varsa bile current context geçersizken note-A body’si üretilmez. Deployment platformu, token exchange, actual clock sync ve revocation propagation bu modelin dışındaki bağımlılıklardır; bunların kanıtı varmış gibi davranılmaz.
WEB-20.S03 · Core · Service identity ve async context propagation ↗İç ağdan geldi; user context doğrudur varsayımıİncelenecek varsayım internal connection’ın veya bilinen service adının her user assertion’ına otorite verdiğidir. Bu sonuç için service’in assertion üretme yetkisi ve recipient’ın doğrulama policy’si kaybolmuş olmalıdır. Workload authentication sender’a ilişkindir; “Duru adına public-note-read” assertion’ı farklı bir issuer ve delegation trust kararı gerektirebilir. Defterin wrong-purpose dalında workload tanınır, user context vardır, ama istenen purpose notes-worker profile’ıyla uyuşmaz. Bu branch bir token değiştirme veya bypass denemesi değildir; supplied normal policy satırı yanlış amaç için güvenli biçimde kapanır. Internal hostname, queue adı, trace alias veya başarılı receipt bu kapıyı açmaz. Gerçek bağlantı identity’si incelenmemişse de sonuç saldırı başarısı değildir: workload verification’ın declared bir dependency olduğu açıkça yazılır.
WEB-20.S03 · Red · Service identity ve async context propagation ↗Gecikmiş ve eksik context’i ayırmakQueue’ya zamanında verilmiş context, worker’ın execution anında hâlâ kabul edilebilir olmayabilir. Bunun impact’i, current time veya policy gate’i yerine eski admission sonucunun kullanılması durumunda doğar. Expired satırı bilinen zaman uyuşmazlığını taşır; context-missing satırı ise actor delegation hakkında yeterli kanıt olmadığını taşır. İkisinin de güvenli sonucu resource delivery=0 ve body=null’dır, ancak teşhisleri farklı kalır. Trace’in devam etmesi identity’nin devam ettiği sonucunu vermez. Aynı mutable object’in iki iş arasında paylaşılması da runtime state karışmasıdır; bu ders yalnız approved copied context ile pozitif isolation gözlemi yapar. Red perspektif supplied koşulların hangisinin gerekli olduğunu sorar, gerçek queue’da privilege yükseltme veya credential kullanımı denemez. Actual distributed replay/retry davranışı için bu finite model kanıt sayılmaz.
WEB-20.S03 · Red · Service identity ve async context propagation ↗Her recipient kendi gate’ini tutarYerel Node AsyncLocalStorage kontrolü jobId ve subject’in iki async scope’ta ayrı kaldığını ölçer. Worker policy satırları ise purpose, audience ve validUntil girdilerine göre üretilir; bunlar queue log’u, signature verification veya IAM kanıtı değildir. Notes API, Queue ve Worker için service role’leri açıkça ayrılır: enqueue, dequeue ve notes.read aynı permission değildir. User context minimal approved field projection ile taşınır; downstream recipient kendisine uygun audience, purpose, lifetime ve resource scope’ı doğrular. Geçerli bir signature varsa bile onu belirli assertion’ı üretmeye yetkili issuer’a bağlamak gerekir; burada signature çalıştırılmaz. Başka service’e context aktarmak gerektiğinde amaç ve recipient için uygun delegation veya exchange profili tasarlanır; bir ID token veya user bearer material körlemesine kopyalanmaz. Modelin success dalı store’un read-only title projection’ını worker’a getirir; API’ye veya son browser’a teslim edildiği iddia edilmez. Service verification, user delegation ve resource permission için ayrı telemetry outcome’ları hata nedenini görünür kılar.
WEB-20.S03 · Blue · Service identity ve async context propagation ↗Isolation ve başarısızlığın sonuçlarıYerel runtime kontrolünde iki Promise continuation, ayrı AsyncLocalStorage.run scope’larında kendi jobId ve subject değerini görür. Bu, Node içindeki actual context davranışıdır; başka process’in trust kararı değildir. Copied job object’inin title veya trace field’ını değiştirmek original request’i veya ikinci işi değiştirmemelidir. Policy fixture’ları wrong-purpose, expired ve missing-context için store’a mesaj çıkmadığını, mutation yapılmadığını ve protected title body’si oluşmadığını denetler. Unknown context, known-deny ile tek kanıt diye birleştirilmez. Production tasarımında yeniden denemeler, revocation, key rotation ve current policy revision ayrı entegrasyonlarla doğrulanır; idempotency key bir permission belgesi değildir. Serverless environment reuse için request state’i per-invocation scope’da kalır. Bu dersin deterministik sahnesi queue ACK, actual token validation veya cloud IAM enforcement testi olarak sunulmaz.
WEB-20.S03 · Blue · Service identity ve async context propagation ↗rowsWorkload ve issuer girdileri ile güncel purpose, audience, time ve resource kararları ayrı tutulur.
WEB-20.S03 · Service identity ve async context propagation ↗copiedContextFieldsJob’a yalnız izin verilen context alanları kopyalanır. Credential material taşınmaz.
WEB-20.S03 · Service identity ve async context propagation ↗correlationTrace alias aynı işi ilişkilendirmeye yarar; identity veya permission kanıtı değildir.
WEB-20.S03 · Service identity ve async context propagation ↗deliveryBoundaryBaşarılı body teslimi yalnız store’dan worker’a kadar gösterilir; API veya browser receipt bilgisi yoktur.
WEB-20.S03 · Service identity ve async context propagation ↗Source, build output ve environment farklı kanıt taşırDevelopment, test, staging ve production adları kalite sonucu değildir. Development değişiklik üretir; test seçilen davranışı kontrol eder; staging release candidate’ı daha temsilî configuration ve dependency’lerle inceleyebilir; production kullanıcıya hizmet verir. Aynı ortam adı iki projede aynı izolasyon veya data policy’sini garanti etmez. Staging’de geçen bir kontrol, production secret’larının, network policy’nin, traffic load’un veya migration state’inin aynı olduğunu göstermez.
WEB-21.01 · Core · Source’tan deployment’a ↗Bundling, CI/CD ve configuration hangi aşamada etkili?Bundling, entry point’ten başlayan imported dependency graph’ını işleyerek output’lara bağlar; basit file concatenation veya ZIP packaging ile aynı iş değildir. Minification representation boyutunu etkilerken bundling code ve dependency düzenini değiştirir. esbuild’in Bundle seçeneği recursive import’ları inlining ile birleştiren somut bir örnektir. External import’lar veya compile time’da çözülemeyen import’lar runtime dependency olarak kalabilir. Bu dersin ZIP örneği static dosyaları paketler; esbuild çalıştırmaz.
WEB-21.01 · Core · Source’tan deployment’a ↗Başarılı build’i onaylı release sanmakBuild command’ın exit code 0 ile bitmesi yalnız o command’ın başarılı olduğunu söyler. Bağımsız kontrol çalışmamış, farklı artifact incelenmiş veya release approval ayrı bir aşamada kalmış olabilir. Böyle bir candidate’ı hazır release saymak gate kapsamını yanlış anlatır. Failed check dalında builder geçerli HTML üretir, fakat verifier beklenen Coffee note ile okunan Tea note farkını görür ve promotion’ı durdurur. Bu, source compilation failure’dan farklı bir sonuçtur.
WEB-21.01 · Red · Source’tan deployment’a ↗Configuration sınırını bytes sınırı sanmakRuntime config değiştiğinde static package aynı kalabilir; bu, application davranışının aynı kaldığını kanıtlamaz. Build time’da browser config içine konan secret da server-only kalmaz. Örnek yalnız public değerler ve bunları type bakımından denetleyen ayrı parser kullanır. Secret yönetimi WEB-16.02’deki lifecycle sınırlarına bağlıdır; environment adı veya .env syntax tek başına vault ya da rotation sağlamaz.
WEB-21.01 · Red · Source’tan deployment’a ↗Test edilen candidate’ın kimliğini sabitleBuradaki kayıtları yerel static-file builder, HTML title okuyucusu, hash hesabı ve typed config decoder üretir. GitHub workflow, production environment veya deployment log’u gözlenmez. Input manifest’i, builder kimliğini, config’in etkisini ve output digest’i aynı candidate kaydında ilişkilendir. Gerekli input eksikse candidate üretimini durdur; partial output’u hazır release gibi gösterme. Örnek title ve CSS için belirlenmiş dosyaları kullanır. Tekrarlanan build aynı byte’ları verirken sıradan bir title değişikliği index ve package digest’ini değiştirir. HTML parser’ın okuduğu title içerik beklentisini, hash ise kontrol edilen byte’ların kimliğini yanıtlar.
WEB-21.01 · Blue · Source’tan deployment’a ↗Gate sonucu ve publication state’i ayrı tutCandidate’ın geçtiği, check’in başarısız olduğu, input’un eksik kaldığı ve config’in uyuşmadığı sonuçları ayrı tut. Yerel build sonucu deployment yapıldığı anlamına gelmez. READ_ONLY parser’ında false metni boolean false olur, beklenmeyen metin reddedilir. Bu yerel type kontrolüdür; Node process.env okuması veya production policy enforcement ölçümü değildir. Config’in string semantics’i ile uygulamanın verdiği karar ayrı değerlendirilir.
WEB-21.01 · Blue · Source’tan deployment’a ↗inputs/outputsPublic source byte’ları ile üretilen HTML/CSS byte’ları.
WEB-21.01 · Source’tan deployment’a ↗normal/gateFailedByte kimliği ve bağımsız içerik kontrolü farklı kararları gösterir.
WEB-21.01 · Source’tan deployment’a ↗runtimeConfig/bundlingRuntime config ayrı değerlendirilir; static ZIP packaging, JavaScript bundling değildir.
WEB-21.01 · Source’tan deployment’a ↗selector/limitsYerel karar gözlemleri; repository build’i, deployment veya gerçek secret okuması yok.
WEB-21.01 · Source’tan deployment’a ↗DNS cevabı HTTP response değildirDNS, adı belirli resource record’larla çözmeye yardım eder; browser’ın HTTP body’sini application’a taşıyan bir forwarding hop değildir. Resolver adres veya ilgili record bilgisini aldıktan sonra client seçilen network endpoint’e ayrı bağlantı kurar. DNS answer adı çözen authority ve resolver cache ömrüyle ilgilidir. Hedef application’ın o anda note’u okuyabildiğini veya caller’a izin verdiğini kanıtlamaz. Örnekte public.example.invalid ve edge-demo verilen alias’lardır; DNS query veya kayıt değişikliği yapılmaz.
WEB-21.02 · Core · Traffic routing, scaling ve availability ↗Scale-out, ready capacity ve high availabilityHorizontal scaling daha fazla instance veya replica ile işi paylaşır; vertical scaling mevcut instance’a daha fazla resource ayırır. Desired replica count controller’ın hedefidir; created ve ready instance sayıları bu hedefe aynı anda ulaşmayabilir. Kubernetes HPA, periyodik metrics ve control loop ile scale target’ını güncelleyen somut örnektir. Application startup, dependency initialization ve readiness ayrı ilerler. Buradaki desired 3 ve ready 2 değerleri örnek koşullarıdır; production threshold veya ölçülmüş HPA formula sonucu değildir.
WEB-21.02 · Core · Traffic routing, scaling ve availability ↗Ad çözümlemeyi ve kutu sayısını availability sanmakDNS lookup başarısı, public request’in bütün zincir boyunca tamamlanacağını söylemez. CDN cache miss, eligible target bulunamaması ve application dependency hatası ayrı boundary’lerdir. Review son status’u doğrudan tek bir origin failure’a bağlamak yerine request’in ve response’un hangi owner’a ulaştığını izler. Sahnenin edge receipt’te bitmesi, henüz client’a ulaşmamış representation’ı tamamlanmış user flow saymayı engeller.
WEB-21.02 · Red · Traffic routing, scaling ve availability ↗Eksik observation’ı sağlıklı veya yetkili saymakEksik readiness alanına true default vermek bilinmeyen target’a trafik yönlendirebilir. False default verip bunu doğrulanmış failure diye raporlamak da kanıtı yanlış yorumlar. Örnekte yalnız literal true eligible kabul edilir; eksik alanın nedeni unknown kalır. No-ready dalı request’i application’a hiç göndermeden unavailable sonucu üretir. Bu, instance’ların neden unready olduğuna dair diagnostic evidence yerine geçmez.
WEB-21.02 · Red · Traffic routing, scaling ve availability ↗Intent, observation ve selected target ayrı alanlarScaling defterinde desired hedefini, oluşturulan instance’ları ve ready set’i birlikte fakat ayrı alanlarda tut. Public read’in amacı, seçilen instance ve result source görünür olsun. Aynı artifact ve version’ın bütün ready instance’larda bulunması ayrıca configuration kanıtı ister; instance sayısı bunu göstermez. Bu örnekteki first-ready policy belirlenmiş seçim kuralıdır. Yerel kontrol input listelerini bağımsız filtreleyerek eksik, false ve true readiness alanlarını ayırır.
WEB-21.02 · Blue · Traffic routing, scaling ve availability ↗Availability iddiasını kullanıcı akışına bağlaSeçilen operation için başarı koşulunu açık yaz: doğru public title, uygun status ve hangi endpoint’e teslim edildiği. Replica-down dalında b’den sonuç alınması ile no-ready dalında hiç forwarding yapılmaması farklı sonuçlardır. HA iddiası ölçülmüş user-flow availability, kalan capacity ve failure-domain kanıtı ister; bu sınırlı case’lerden yüzde veya SLA çıkarılmaz. DNS TTL ya da CDN cache ömrü de her yere anında yayılma garantisi değildir.
WEB-21.02 · Blue · Traffic routing, scaling ve availability ↗topology/normalVerilen name resolution ile sınırlı origin path farklı receipt’ler taşır.
WEB-21.02 · Traffic routing, scaling ve availability ↗scaleDesired, created ve ready sayıları ayrıdır; HPA veya capacity ölçülmez.
WEB-21.02 · Traffic routing, scaling ve availability ↗unknownHealth/noReadyEksik observation unknown kalır; yalnız literal true traffic seçimine uygundur.
WEB-21.02 · Traffic routing, scaling ve availability ↗selector/limitsYerel health kararı; gerçek DNS, cloud, HA veya private permission ölçümü yok.
WEB-21.02 · Traffic routing, scaling ve availability ↗Observability, instrumentation sayısından büyük bir sorudurObservability, dışarıdan görülen signals ile sistemin içinde ne olduğunu ve belirli davranışın nedenini anlayabilmektir. Çok log satırı veya güzel dashboard tek başına yeterli değildir. Önce soru seçilir: public note okuması tamamlandı mı, hangi dependency bekledi, error hangi aşamada oluştu, observation pipeline gerçekten data aldı mı? Instrumented operation, signal semantics ve correlation bu soruya bağlanır. Telemetry sonucu authoritative business state’in yerine geçmez.
WEB-21.03 · Core · Logs, metrics ve traces ↗Bir event oluşması bütün signals’da görünmesini garanti etmezInstrumentation, sampling, local buffer, exporter ve collector/backend ayrı aşamalardır. Request gerçekleşmişken sampling kararı nedeniyle trace tutulmamış olabilir. Metrics ayrı instrumentation yolu üzerinden aynı request’i sayabilir. Head sampling erken karar verdiği için sonradan oluşan her error’ı seçme garantisi vermez. Tail sampling tamamlanmış span bilgisine daha geniş bakabilir, fakat kendi buffer ve availability sınırları vardır. Örnek verilen sampled boolean’ını kullanır; gerçek OpenTelemetry sampler veya collector çalıştırmaz.
WEB-21.03 · Core · Logs, metrics ve traces ↗No signal’ı no event veya healthy diye okumakTrace bulunmamasından operation’ın gerçekleşmediği çıkarılamaz. Sampling false, eksik context, exporter failure veya retention window farklı açıklamalar olabilir. Unsampled dalında business response tamamlanır, metric artar ve retained trace sayısı 0 kalır. Request sonucu ile recording kararı ayrı tutulur; tutulmamış trace için gerçekleşmemiş failure veya success event’i üretilmez.
WEB-21.03 · Red · Logs, metrics ve traces ↗Daha fazla data toplamak her zaman daha iyi değildirRequest body, Authorization, session identifier veya private attribute’ları bütünüyle log’a taşımak secrets ve personal data exposure yaratabilir. Örnekte yalnız demo-token-alias ve demo-session-alias sahte değerleri vardır. Allowlist output’ta event, operation ve correlationAlias bırakırken source dictionary değişmez. Bu kontrol gerçek secret keşfi veya bütün nested log formatlarını tarayan detector değildir; yalnız verilen alanların sink’e gitmediği bağımsız olarak okunur.
WEB-21.03 · Red · Logs, metrics ve traces ↗Sinyalin neyi saydığını ve neyi taşıdığını tanımlaLog schema’sında event’in amacını, output’a uygun alanları ve correlation alias’ını tanımla; raw secrets veya upstream object’in tamamını ekleme. Metric counter’ın reset kapsamını ve operation/status boyutlarını kaydet. Histogram ve duration yorumu unit, window ve source clock ister; verilen logical tick’i millisecond veya benchmark sanma. Root/child span ilişkisini ortak traceAlias ve doğru parentAlias ile göster. İsim eşitliği tek başına parent context kurmaz.
WEB-21.03 · Blue · Logs, metrics ve traces ↗Visibility gap ve business outcome’u birlikte gösterExporter error, unsampled trace ve eksik observation’ı ayrı dallarla göster. Export error sırasında public read tamamlanabilir ama signal store eksik kalır; bunu health success saymadan visibility gap olarak kaydet. Unsampled dalında sıfır trace için açık sampling kararı vardır; missing observation’da aynı açıklama bulunmayabilir. Best-effort policy yalnız operational public-read diagnostics içindir. Security-sensitive audit retention ve access policy ayrıca belirlenmelidir.
WEB-21.03 · Blue · Logs, metrics ve traces ↗normal/schemaYalnız örneğin public output schema’sı; sahte hassas alias’lar dışarıda bırakılır.
WEB-21.03 · Logs, metrics ve traces ↗window/spansSınırlı counter window’u ile verilen logical span aralıkları farklı kapsam taşır.
WEB-21.03 · Logs, metrics ve traces ↗unsampled/exportFailure/missingRecording kararı, sink hatası ve eksik evidence farklı sonuçlardır.
WEB-21.03 · Logs, metrics ve traces ↗selector/limitsProduction capture, gerçek SDK/backend, secret veya latency ölçümü yok.
WEB-21.03 · Logs, metrics ve traces ↗Encryption, MAC ve signature neyi kanıtlar?Encryption plaintext’i uygun key olmadan okunamaz kılmayı amaçlar; her encryption modu tek başına integrity veya data origin authentication sağlamaz. Authenticated encryption uygun profile altında bu amaçları birleştirir. MAC, shared secret’a sahip taraflar için integrity ve key holder ilişkisi sağlar; key’i birden fazla taraf biliyorsa hangisinin MAC ürettiğini ayıramaz. Digital signature private key ile üretilip public key ile doğrulanır. Confidentiality sağlamaz ve key holder’ın business identity’sini tek başına kanıtlamaz. Atlas Notları, Tea & Bread başlığının signature verification’ını key provenance ve kabul edilen kullanım amacı kararından ayırır. Hash key kullanmaz; expected digest’in kaynağı güvenilir değilse eşleşme trustworthy origin sonucu vermez. Defter bu farklı amaçları gösterir; encryption, MAC veya tam bir identity protocol çalıştırmaz.
WEB-21.S01 · Core · Data, secrets ve cryptographic key lifecycle ↗Key lifecycle’ın kararlarıKey lifecycle generation, kontrollü distribution/storage, active use, rotation, retirement ve gerektiğinde recovery/destruction kararlarını içerir. Defterde key-new active, key-old verify-only durumundadır. Old private key ile yeni signature üretimi kapalıdır, fakat arşiv verisi belirli verification süresi boyunca eski public key ile doğrulanabilir. now=verifyUntil olduğunda application acceptance kapanır; signature matematiksel olarak hâlâ doğrulanabilir. Rotation yeni key version kullanma kararıdır; geçmiş ciphertext’i otomatik yeniden encrypt etmez veya bütün key kopyalarını yok etmez. Encryption key’ini erken silmek gerekli restore’u engelleyebilir. Signing key’in arşiv verification ihtiyacı ayrı retention kararıdır. Yerel kontrol geçici, dışarı aktarılmayan Ed25519 KeyObject’leriyle title sign/verify ve lifecycle gate’ini değerlendirir; KMS, HSM, certificate chain veya secure zeroization ölçmez.
WEB-21.S01 · Core · Data, secrets ve cryptographic key lifecycle ↗Source ve build’den browser’a secrecy taşınmazServer credential, signing private key ve browser’a gösterilebilir public config aynı classification değildir. Server secret’ın repository, build log, generated bundle veya source map’e girmesi delivery boundary’sini aşabilir. Build-time substitution ile browser JavaScript’ine eklenen değer client’a teslim edilmiş veridir; environment variable adı secrecy sağlamaz. Obfuscation da secret storage yerine geçmez. Public endpoint adı, public verification key veya renk ayarı secret olmayabilir; classification biçime değil kullanım amacına bağlıdır. Artifact yalnız alias ve boolean taşır, gerçek secret değeri içermez. Source/build/browser defterinde server-secret için delivery kapalıdır. Secret erişimi workload’un ihtiyacı ve uygun lifetime ile sınırlandırılır; secret manager erişimi aynı secret’ı her client’a gönderme izni değildir.
WEB-21.S01 · Core · Data, secrets ve cryptographic key lifecycle ↗Data lifecycle her kopyada devam ederData lifecycle toplama ve purpose kararından processing, storage, paylaşım, retention ve deletion’a uzanır. Tea & Bread public eğitim notudur; defter primary store, cache, log ve backup kopyalarının neden tutulduğunu ayrı gösterir. Uygulamadaki delete işareti bütün kopyaların silindiğini kanıtlamaz. Backup deletion evidence eksikse sonuç unknown kalır; her yerden silindiği söylenmez. Retention gerçek ihtiyaç ve geçerli yükümlülüklerle belirlenir; örnekteki 30 tick bir hukuk kuralı değildir. W3C data minimization/purpose ilkeleri gereksiz aktarımı azaltmayı, OWASP log disposal rehberi ise log kopyaları ve retention sınırlarını ele alır. Kaynaklar bu notun gerçekten silindiğini kanıtlamaz; copy defteri verilen örnek koşullarını taşır.
WEB-21.S01 · Core · Data, secrets ve cryptographic key lifecycle ↗Primitive başarısını trust sonucu sanmakSignature doğruysa key ve kullanım amacı da kabul edilir varsayımı, cryptographic sonucu application policy ile karıştırır. Bunun geçerli olması için provenance, kullanım state’i ve verification window ayrıca sağlanmalıdır. Verify-only eski public key’in arşiv verisini doğrulaması seçilen policy içinde normal davranıştır. Retired-key dalında cryptoVerifiedDeclared=true kalırken application acceptance false olur: matematiksel verification ile resource delivery farklı kararlardır. Bu satır key forgery veya credential ele geçirilmesi kanıtı değildir. Unknown-key dalında crypto evidence null’dır; verification yapılmamışken signature yanlış denmez. Key holder’ın kimliği için de gerçek issuer veya certificate evidence bulunmaz. Sonuç yalnız verilen alias’lar ve policy koşullarıyla sınırlıdır.
WEB-21.S01 · Red · Data, secrets ve cryptographic key lifecycle ↗Copy görünürlüğü ve deletion iddiasıSource’dan secret satırını kaldırmak veya primary record’a deletion state yazmak bütün lifecycle’ı bitirmez. Sonuç build output, log, cache ve backup kopyalarının kapsamına bağlıdır; tek UI gözlemi yeterli değildir. Classification defteri server-only verinin browser delivery’sini kapatırken public title’a izin verir. Primary için olumlu deletion evidence, backup’ın unknown alanını true yapmaz. Kopyaların farklı purpose ve retention taşıması kendiliğinden hata değildir, fakat belgelenmiş kapsam dışındaki saklama ve paylaşım ayrıca kontrol gerektirir. Her kopya için hangi kanıtın bulunduğu sorulur. Gerçek repository history, browser bundle veya key store bu örnekte incelenmediğinden exposure ya da tam deletion sonucu çıkarılmaz.
WEB-21.S01 · Red · Data, secrets ve cryptographic key lifecycle ↗Amaç, state ve kopya envanterini birlikte tutKey inventory’de alias, algorithm, purpose, active/verify-only/retired state ve kullanım sürelerini ayrı tut. Yeni üretimin hangi key’e bağlandığını, arşivin ne kadar doğrulanacağını ve compromise durumunda acceptance’ın nasıl kapanacağını rotation profile’ında belirle. Sensitive data classification’ı key state ile karıştırma; server-only secret ile public note arasında açık delivery gate olmalıdır. Metadata erişim kontrollü audit’e gidebilir, key material loglanmaz. Recovery gerekiyorsa encrypted data ile gerekli key version ilişkisi korunur; restore doğrulanmadan destruction başarısı varsayılmaz. Bu modelin old/new alias’ları gerçek key manager dosyası veya endpoint’i değildir. Yerel keypair generation da validated cryptographic module veya kurumun rotation programı için sertifika sayılmaz.
WEB-21.S01 · Blue · Data, secrets ve cryptographic key lifecycle ↗Ret sonucu ile eksik kanıtı ayrı kontrol etOlumlu örnek accepted verification ve public title delivery’yi kontrol eder. Retired-key, server-only ve unknown-key için delivery ve write false, body null kalmalıdır. Primitive kontrolü yalnız Tea & Bread byte’larını yerel Ed25519 keypair ile sign/verify eder; token, certificate veya credential serileştirmez. Verify-only policy yeni signing’i kapatırken eski signature’ın matematiksel doğrulanabildiği ayrıca gözlenir. KeyObject referanslarını bırakmak JavaScript memory’sinde secure zeroization garantisi vermez. Data-copy kontrolü backup evidence eksikken allCopiesDeleted sonucunu unknown tutar. Bu yerel kontroller tekrar çalıştırılabilir; gerçek KMS rotation, browser secrecy, storage restore veya backup erasure için ayrı integration evidence gerekir.
WEB-21.S01 · Blue · Data, secrets ve cryptographic key lifecycle ↗cryptoPurposeCrypto mekanizmalarının farklı amaçları; tek başına identity kanıtı değildir.
WEB-21.S01 · Data, secrets ve cryptographic key lifecycle ↗rowsVerilen lifecycle/classification koşulları ve title delivery sonucu.
WEB-21.S01 · Data, secrets ve cryptographic key lifecycle ↗classificationLedgerYalnız alias kullanılır; server-only değer artifact’e dahil değildir.
WEB-21.S01 · Data, secrets ve cryptographic key lifecycle ↗dataCopiesHer kopyanın deletion evidence’ı ayrı tutulur; null bilinmeyeni gösterir.
WEB-21.S01 · Data, secrets ve cryptographic key lifecycle ↗Environment config de release girdisidirAynı artifact farklı runtime config ile farklı exposure yaratabilir. Debug output, admin access policy, kabul edilen host profile, secrets injection ve storage bağlantıları environment’e göre belgelenir. Atlas Notları review profile’ı debug=false, admin owner-only ve host profile configured=true gerektirir; bunlar örneğin policy koşullarıdır. Django 5.2 deployment checklist production’da DEBUG’ı kapatmayı açıklar, fakat bu örnek Django çalıştırmaz; tek flag bütün sistemi güvenli yapmaz. Admin’i görünmeyen URL’ye taşımak authentication veya authorization değildir. Network isolation ve application permission ayrı katmanlardır. Config review build hash’inden bağımsızdır: doğru byte’lar yanlış exposure ile çalışabilir. Burada profile yalnız adayın yerel review listesine kabulünü belirler; deployment yapılmaz.
WEB-21.S02 · Core · Dependencies, CI/CD integrity ve safe deployment ↗Dependencies yalnız direct package değildirDependency inventory direct ve transitive package’ları, build tooling’i ve pipeline integration/action’larını kapsar. Lockfile resolution ve integrity metadata’sını sabitler; her package’ın güvenilir veya vulnerability içermediğine dair sertifika değildir. Pinning, edinilen package’ın provenance’ı ve version review ile birlikte değerlendirilir. Third-party JavaScript browser document context’inde çalışıyorsa data access boundary’sini de etkiler; CDN’den gelmesi izolasyon sağlamaz. SRI belirli resource byte’larını expected hash ile karşılaştırır. Expected hash’i taşıyan HTML’e güveni veya code’un business güvenliğini tek başına doğrulamaz. Cross-origin SRI browser CORS koşullarına bağlıdır. dep-A sentetik inventory alias’ıdır; gerçek installed package veya registry evidence’ı değildir.
WEB-21.S02 · Core · Dependencies, CI/CD integrity ve safe deployment ↗Hash ile provenance birbirini tamamlarSHA-256 artifact byte’larının eşitliğini karşılaştırır; expected digest’in hangi güvenilen manifest’ten geldiği ayrı sorudur. Provenance artifact’i source revision, builder ve build profile ile ilişkilendirir. SLSA v1.2 rehberi trusted builder/root, provenance signature ve beklenen buildType/parameters kontrollerini ayırır. Bu defter tamamlanmış SLSA attestation değildir; signature validation ve builder trust verilen koşullardır. Public text digest’i gerçekten yerel hesaplanır. Provenance-missing dalında digest doğru olsa bile builder kanıtı unknown olduğundan review delivery kapanır. Provenance code review veya deployment authorization değildir. Artifact ile metadata aynı güvenilmeyen yerden geliyorsa kendi aralarındaki eşleşme yeni trust oluşturmaz; hash sonucu ve approval nedeni ayrı kaydedilir.
WEB-21.S02 · Core · Dependencies, CI/CD integrity ve safe deployment ↗Promote ve rollback için hangi evidence?Safe deployment tasarımı reviewed artifact’i yeniden build etmeden aynı kimlik ve digest ile promote etmeyi, environment config ve release permission’ı doğrulamayı, health/rollback koşullarını önceden belirlemeyi amaçlar. Aynı tag’ın başka byte’lara çözülmesi veya rollback’ın incompatible data migration’a dönmesi ayrı risklerdir. Eski artifact’in varlığı geri dönüş garantisi vermez. source-rev-A ve builder-A açıklayıcı alias’lardır, gerçek Git commit veya runner değildir. Sahne source, builder, review gate ve yerel candidate listesiyle biter. Sonuç review’e uygun adaydır; published veya deployed değildir. Verilen review permission true olsa da actualDeployment=false kalır. Yerel gate’in tamamlanması infrastructure, public endpoint veya rollout’un doğrulandığı anlamına gelmez.
WEB-21.S02 · Core · Dependencies, CI/CD integrity ve safe deployment ↗Yeşil build’i güvenilir release sanmakBaşarılı build veya doğru digest’in provenance, config ve release approval’ı da tamamladığını varsaymak bağımsız gate’leri birleştirir. Böylece incelenmemiş source, farklı builder veya debug-on config aynı promotion sonucuna taşınabilir. Hash-different satırında public başlık sırası değişir; gate yalnız beklenen byte’ların farklı olduğunu belirler. Provenance-missing satırında ise byte eşitliği korunur ama builder kanıtı yoktur; bunu hash failure diye etiketlemek yanlıştır. İnceleme her gate’in doğru candidate ve input’a bağlı olup olmadığını sorar. Testin geçmesi builder’a deployment yetkisi veya admin exposure izni vermez. Gerçek CI runner, registry ve production settings incelenmediğinden supply-chain compromise ya da tamamlanmış safe deployment sonucu çıkarılmaz.
WEB-21.S02 · Red · Dependencies, CI/CD integrity ve safe deployment ↗Dependency ve browser trust’ın scope’ıPinned dependency veya SRI hash’i third-party code’u kendiliğinden zararsız yapmaz. Bu kontroller resolution ve byte beklentisini sınırlar; data kullanımı, transitive behavior ve publisher provenance ayrıca incelenir. Runtime script document context’inde çalışırken farklı network host’tan gelmesi otomatik browser origin isolation sağlamaz. Integrity pass, secret classification’ını da değiştirmez. Buradaki inventory alanları verilen eğitim verisidir; source map, bundle veya package içeriği taranmaz. Hangi dependency, revision, permission ve build input’un aynı candidate’a ait olduğu ilişkilendirilir. Eksik review evidence unknown kalır ve review delivery kapanır. Yerel byte/gate sonucu gerçek package davranışı veya browser execution için kanıt değildir.
WEB-21.S02 · Red · Dependencies, CI/CD integrity ve safe deployment ↗Adayın kimliğini gate’ler boyunca koruSource revision, dependency resolution profile, builder trust kanıtı, artifact digest ve target configuration’ı aynı candidate ID’ye bağla. Approval mutable tag veya branch adına değil incelenen artifact’e ait olmalıdır. Build runner identity ve permission’ını gerekli kapsamla sınırla; release gate ayrı yetki ister. Bu candidate listesi yalnız yerel review teslimini kabul eder, publication izni taşımaz. Debug ve admin policy kontrolleri hash kontrolünden bağımsızdır. Dependency değişikliğini contract değişikliği gibi incele: direct/transitive kapsamı ve browser script erişimini belgele. SRI için expected hash kaynağı ve cross-origin CORS uyumluluğunu koru. Gerçek platformdaki signed provenance ve trusted root bağlantıları ayrı doğrulama gerektirir; buradaki alanlar verilen koşullardır.
WEB-21.S02 · Blue · Dependencies, CI/CD integrity ve safe deployment ↗Ret durumunda candidate teslimini durdurYerel kontrol Atlas Notes public text’lerinin SHA-256 digest’ini hesaplar ve verilen gate’leri birlikte değerlendirir. Hash-different, debug-on ve provenance-missing için expectedReviewDelivery=false, write=false ve approvedBody=null aranır. Eksik provenance boolean false diye gizlenmez; unknown evidence ayrı tutulur. Normal dalın son actor’ı adayı yalnız approved local review için alır. Debug flag ve admin policy bu modelde configuration beyanıdır; server’a uygulanmış ayar değildir. Aynı digest korunurken yanlış config’in reddedilmesi byte kimliğiyle config uygunluğunu ayırır. Yerel sonuç artifact eşitliği ve sınırlı policy hesabıdır; dependency supply chain, browser SRI enforcement, reproducible build veya rollback health için ayrı execution evidence gerekir.
WEB-21.S02 · Blue · Dependencies, CI/CD integrity ve safe deployment ↗rowsYerel review gate’i; hash, verilen provenance ve config ayrı koşullardır.
WEB-21.S02 · Dependencies, CI/CD integrity ve safe deployment ↗dependencyInventorySentetik alias; kurulu package inventory’si veya registry kanıtı değildir.
WEB-21.S02 · Dependencies, CI/CD integrity ve safe deployment ↗browserBoundarySRI integrity kapsamı code safety veya browser test sonucu değildir.
WEB-21.S02 · Dependencies, CI/CD integrity ve safe deployment ↗promotionBoundaryReview için teslim, publication veya deployment değildir.
WEB-21.S02 · Dependencies, CI/CD integrity ve safe deployment ↗Quota ile permission birbirinin yerine geçmezResource policy request size, concurrency, work budget, deadline ve queue sınırları gibi farklı koşullar içerir. Rate limit belirli zaman penceresindeki sıklığı sınırlar; tek pahalı operation’ın memory veya fan-out’unu tek başına kontrol etmez. Atlas Notları public title read için maxConcurrent=2, maxBytes=64 ve deadlineTick=10 kullanır. Bunlar örnek değerleridir, gerçek capacity ölçümü değildir. Permission’ın bilinmesi ve verilmesi quota gate’inden ayrıdır. İzinli actor quota doluyken read başlatamaz; boş quota da unknown permission’a izin vermez. Ucuz size/shape kontrolünü pahalı işten önce yapmak yararlı sınırdır, OS/container isolation kanıtı değildir. Sahne gate tamamlanmadan store’a dispatch yapmaz. Başarı read-only title projection’dır; store mutation veya write modellenmez.
WEB-21.S03 · Core · Resource limits, errors ve fail-open boundaries ↗Deadline, cancellation ve partial failureDeadline caller’ın artık beklemeyeceğini belirleyebilir; downstream işin kesin durduğu veya side effect’in geri alındığı anlamına gelmez. Bu model admission’ı deadline’dan önce kontrol ettiğinden expired dalı store’a ulaşmaz. Daha önce dispatch edilmiş write için response kaybı farklıdır: sonuç unknown kalabilir ve koşulsuz retry aynı action’ı yeniden uygulayabilir. Artifact bu genel durumu ayrı partial-failure tablosunda tutar; read-only ret dallarıyla karıştırmaz. Cancellation propagation, transaction commit ve idempotency kapsamı gerçek integration evidence ister. Yerel quota reservation normal sonuçta veya exception sonrası finally ile bırakılır. Bu local counter davranışı ölçülebilir; process crash, distributed lease ve yük altında autoscaling doğrulanmış sayılmaz.
WEB-21.S03 · Core · Resource limits, errors ve fail-open boundaries ↗Error formatı ile evidence scope’ıError handling client’a anlaşılır status ve sınırlı açıklama verirken server diagnostic’i erişim kontrollü tutar. Stack dump, secret veya internal path client body’sine eklenmez. RFC 9457 problem details, troubleshooting için sınırlı açıklama formatı sunar ve RFC 7807’nin yerini alır. Defter typed decision code kullanır; gerçek HTTP response üretmez. 429 rate limiting’i anlatır ve Retry-After isteğe bağlıdır. Her concurrency exhaustion’ın mutlaka 429 olması veya retry’ın kesin başarılı olması sonucu çıkarılmaz. Permission unknown, known deny, deadline ve quota-full farklı internal nedenlerdir. Sade client mesajı telemetry’nin bütün nedenleri tek error altında toplamasını gerektirmez. Dispatch edilen action, recipient ve commit evidence ayrı izlenir.
WEB-21.S03 · Core · Resource limits, errors ve fail-open boundaries ↗Graceful degradation’ın yetki sınırıDependency hatasında sistemin tamamen durmaması yararlı olabilir; permission service’e ulaşılamamasını allow’a çevirmek ise farklı policy kararıdır. Fail-closed gate protected action’ı teslim etmez. Public yardım metni veya offline reference ayrı policy ile sunulabilir; protected body yerine sessizce verilmez. Defter permission-missing için evidence=null ve allow=false tutar. Cached karar kullanılacaksa actor/object/action kapsamı, freshness ve revocation ihtiyacı açık olmalıdır. Eski allow’u sınırsız kullanmak graceful degradation değildir. Error boundary exception’ları kontrol dışı success’e çevirmemelidir. Resource limit de authorization’ın üzerinde bağımsız admission katmanıdır; bu sınırlı predicate fault tolerance, network availability veya resource isolation garantisi vermez.
WEB-21.S03 · Core · Resource limits, errors ve fail-open boundaries ↗Hata aldı; o hâlde işlem olmadı varsayımıCaller’ın error görmesi bütün downstream action’ların yapılmadığını kanıtlamaz. Böyle bir sonuç dispatch ve commit boundary’si hakkında yeterli evidence ister. Quota-full ve deadline dalları dispatch öncesinde kapanır; store’a dokunulmadığı sonucu bu adım sırasına bağlıdır. Genel partial-failure tablosunda ise write dispatch edilmiş, response kaybolmuş ve commit evidence unknown kalmıştır; writeOutcome null’dır. Bu verilen durum gerçek write veya timeout deneyi değildir. İnceleme kanıtın hangi aşamada kaybolduğunu ve retry policy’nin hangi action’a uygulandığını sorar. Client error, server rollback, bütün worker’lara cancellation ulaşması veya eksiksiz audit anlamına gelmez. Her biri ayrı integration ya da transaction evidence gerektirir; normal read kontrolü bunların yerine geçmez.
WEB-21.S03 · Red · Resource limits, errors ve fail-open boundaries ↗Dependency unknown’dan allow’a sıçramaResource veya permission dependency’si yanıt vermediğinde protected işlemi açmak yalnız availability tercihi değildir; authorization control’ünü de değiştirir. Gerekli actor/object/action evidence olmadan protected delivery yapılması boundary’yi aşar. Model permission-missing için null saklar, dispatch ve body olmadan kapanır. Known deny ayrı false evidence taşır. İki branch’in aynı no-delivery sonucuna ulaşması kanıtlarının aynı olduğu anlamına gelmez. Quota-full da actor’ın yetkisiz olduğunu göstermez; yalnız seçilen budget aşılmıştır. Review nedenleri karıştırmadan gerekli koşulları izler. Örnek finite sayılarla admission kararını inceler; gerçek overload, endpoint davranışı veya distributed counter ölçümü yapmaz.
WEB-21.S03 · Red · Resource limits, errors ve fail-open boundaries ↗Admission ve cleanup sahipliğini belirleRequest size, permission evidence, concurrency ve deadline gate’lerini pahalı resource işleminden önce uygula. Counter reservation yalnız kabul edilen iş için yapılır; yerel operation sonunda finally release edilir. Distributed sistemde counter’ın node/tenant kapsamı, atomicity’si ve crash recovery’si ayrı tasarım sorularıdır. İki integer karşılaştırması bunları çözmez. Permission dependency hatasında protected title teslim edilmez. Sınırlı public fallback varsa ayrı operation ID ve policy ile açıkça gösterilir. Server diagnostic nedeniyle client’a uygun sade mesaj ayrı projection’lar kullanır; plaintext secret, stack ve internal filesystem path dışarı verilmez. HTTP adapter status’u kendi profile’ına göre seçer. Bu defterdeki typed code’lar evrensel Event ID veya her platform için zorunlu HTTP code değildir.
WEB-21.S03 · Blue · Resource limits, errors ve fail-open boundaries ↗No-dispatch ile unknown commit kanıtını koruBağımsız fixture normal read’in title ürettiğini; quota-full, permission-missing ve deadline dallarının dispatch=0, delivery=0, write=false ve body=null tuttuğunu kontrol eder. Yerel counter testinde success ve sabit benign exception sonrası finally cleanup gözlenir. Bu scheduler veya yük testi değildir. Input data ve request context’inin değişmemesi de ayrı kontrol edilir. Partial-failure tablosundaki unknown commit known false yapılmaz; mutating action retry’ı idempotency ve transaction evidence ister. Sade error formatı internal nedeni kaybetmeden client’a fazla ayrıntı taşımamayı amaçlar. Bu kanıt admission tasarımını açıklar; gerçek concurrency, cancellation, circuit breaker veya overload capacity için ayrı integration test’i gerekir.
WEB-21.S03 · Blue · Resource limits, errors ve fail-open boundaries ↗rowsSınırlı admission koşulu; ret durumunda dispatch, delivery veya write yoktur.
WEB-21.S03 · Resource limits, errors ve fail-open boundaries ↗partialFailureLedgerÖnceden dispatch varsa commit unknown olabilir; burada gerçek write çalıştırılmaz.
WEB-21.S03 · Resource limits, errors ve fail-open boundaries ↗errorProfileClient’a uygun sade projection; hassas internal ayrıntı içermez.
WEB-21.S03 · Resource limits, errors ve fail-open boundaries ↗unknownEvidenceEksik permission evidence, bilinen deny kararı değildir.
WEB-21.S03 · Resource limits, errors ve fail-open boundaries ↗HTTP kaydı ile iş kararıTea note için HTTP access kaydı bir request’in server tarafından görüldüğünü ve response status’unu anlatır. Business audit ise actor Duru, action rename-note, object tea, tenant Atlas, decision deny ve reason owner-policy bilgisini taşır. Bu iki olayın amacı farklıdır. Public açıklama yanıtı 200 olabilirken rename-note kararı deny kalabilir; status tek başına işin commit edildiğini söylemez. Uygulamanın policy kararına yakın ürettiği event, dış request header’ından türetilmiş actor etiketiyle aynı güven düzeyinde değildir.
WEB-21.S04 · Core · Audit evidence, detection ve incident scope ↗Baseline, eksiklik ve incident sınırıSınırlı comparator tenant, operationAlias ve object tuple’ı içinde deny ile committed=true çelişkisini arar. Normal deny/committed=false kaydı 0, hazırlanmış sentetik çelişki 1 sonuç verir. Bu gerçek policy ihlali observation’ı değil, incelenecek kayıt tutarsızlığıdır. Nova aynı req-demo alias’ını kullansa da Atlas satırına join edilmez. Eksik commit alanı false diye doldurulmaz; unknown kalır. Aynı tuple’daki bütün kayıtlar değerlendirilir. Kayıt sırası sonucu değiştirmemeli, tamamen aynı event’in tekrarı yeni outcome sayılmamalıdır. Çelişen complete kayıtlar ambiguous, incomplete evidence unknown olarak tutulur. Bu sınıflar otomatik incident verdict değildir.
WEB-21.S04 · Core · Audit evidence, detection ve incident scope ↗Korelasyonun yetkiye dönüşmesiLogging application kararını sonradan anlaşılır kılar. Gereken güven bağı event’in doğru source, identity context ve operation’a ait olmasıdır. Request etiketi yeniden kullanılır veya tenant kaybolursa ilgisiz işler tek zincir gibi görünebilir. Bu yanlış attribution ya da gereğinden geniş incident kapsamı yaratır; etiket eşleşmesi object yetkisi değildir. Kontrol composite correlation, source context ve eksik field’ın unknown tutulmasıdır. Sabit Atlas/Nova satırları aynı alias’ın farklı tenant’larda farklı bağ taşıdığını gösterir.
WEB-21.S04 · Red · Audit evidence, detection ve incident scope ↗Log da korunacak bir veri kümesidirLog yazarı bütün request’i kopyalarsa correlation için gereken birkaç alan yanında session değerleri, token, kişisel bilgi veya note body de taşınabilir. Normal amaç action sonucunu açıklamaktır; bu geniş veri kopyası o amaç için gerekli değildir. Kontrol allowlist ve veri minimizasyonudur. Örnekte fake Authorization, fake sessionIdentifier ve sıradan noteText source nesnesinde bulunur ama audit çıktısında yoktur. Sonraki reviewer’ın erişimi yalnız ihtiyacı olan event alanlarıyla sınırlandırılır; hash veya alias kullanımı da ilişkilendirme riskini otomatik ortadan kaldırmaz.
WEB-21.S04 · Red · Audit evidence, detection ve incident scope ↗Seçimin sonucu ile evidence yeterliliğiComparator şeması eventId, tenant, operationAlias, object, decision ve committed alanlarını ister. Aynı tuple’daki bütün business satırları okunur; ilk eşleşmede durulmaz. Event ID ve bütün alanları aynı complete tekrar tek evidence sayılır. Herhangi bir unique satır deny/true ise review-required sonucu çıkar. Farklı complete kararlar veya aynı event ID altında farklı alanlar varsa ambiguity görünür kalır; açık deny/true yoksa conflicting complete kayıtlar ambiguous olur. Eksik commit evidence unknown’dır. Bu yerel Python karşılaştırması policy ihlali veya SIEM deployment kanıtı değildir. XPath tek XML’de deny/true satırlarını seçer: normal 0, positive 1, eksik document 0 verir; sonuncusu healthy baseline değildir.
WEB-21.S04 · Blue · Audit evidence, detection ve incident scope ↗Incident ve recovery kararını sınırlamakReview önce gözlemi yazar: Atlas/op-demo/tea tuple’ında decision ile commit kaydı çelişiyor. Sonra kaynak ve uncertainty belirtilir: sabit fixture, verilen producer context ve clock belirsizliği. Impact kanıtın izin verdiği kapsamla sınırlanır. Bütün tenant’ların etkilendiği veya Duru’nun kötü niyetli olduğu çıkarılmaz. NIST incident yaklaşımında analysis, magnitude ve evidence provenance önemlidir. Bu örnek otomatik user blocking veya recovery başlatmaz; karar sahibine bilinen ve bilinmeyen alanları verir.
WEB-21.S04 · Blue · Audit evidence, detection ve incident scope ↗ledgerVerilen source context’e ait event alanları; canlı log değildir.
WEB-21.S04 · Audit evidence, detection ve incident scope ↗correlationKeysTenant/operation/object ilişkisi; credential değildir.
WEB-21.S04 · Audit evidence, detection ve incident scope ↗excludedSeedSahte hassas alanlar output’a kopyalanmaz.
WEB-21.S04 · Audit evidence, detection ve incident scope ↗scope/recoveryBilinen kapsam ve yeni checkpoint; production restore yoktur.
WEB-21.S04 · Audit evidence, detection ve incident scope ↗selectorTek XML’de deny/commit çelişkisi; eksik evidence unknown kalır.
WEB-21.S04 · Audit evidence, detection ve incident scope ↗Adresin parçaları farklı sahiplerde anlam kazanırhttps://public.example.invalid/notes/tea?view=compact#details adresini düşün. Scheme, hostname, port, path, query ve fragment tek bir server komutu değildir. URL parser bu parçaları bir record’a ayırır; HTTPS’in varsayılan portu canonical serialization’da görünmeyebilir. /notes/tea?view=compact HTTP target’a girer, #details client-side seçim olarak kalır. Bu örnekte browser adres çubuğu, history veya document navigation çalıştırılmaz. Aynı standart ailesindeki URL API ile adres record’u incelenir.
WEB-22.01 · Core · URL’den güvenli connection’a ↗Transport seçimi ile güvenilen peer’i ayırHTTPS request her seferinde yeni TCP handshake gerektirmez. Uygun existing connection kullanılabilir; cache veya service worker daha erken cevap verebilir. Yeni HTTP/1.1 ve HTTP/2 connection’da TCP ile TLS ayrı katmanlardır. HTTP/3 QUIC kullanır; QUIC v1 transport ve TLS cryptographic handshake’i birlikte yürütür, ayrıca TCP handshake yapmaz. Protocol selection, pooling ve resumption implementation policy’sine bağlıdır. Tek sahne bütün browser’lar için zorunlu zaman sırası değildir.
WEB-22.01 · Core · URL’den güvenli connection’a ↗Çözülmüş adresi güvenilmiş servis sanmakNormal amaç URL’de seçilen origin’e ulaşmaktır; gereken güven bağı connection’ın intended server identity için doğrulanmasıdır. DNS answer veya erişilebilir transport bu bağın yerine konursa yanlış peer’e application data gönderilebilir. Bozulan varsayım address discovery’nin endpoint authentication yaptığı düşüncesidir. Örnekte other.example.invalid için nameMatch=false verilir. Bu sıradan alias karşılaştırması gerçek server bağlantısı veya certificate verification ölçümü değildir.
WEB-22.01 · Red · URL’den güvenli connection’a ↗Eksik stage’i tamamlanmış göstermekNo-address dalında resolver’ın bu örnek için usable answer’ı yoktur. Bunun gerçek NXDOMAIN, timeout veya offline durumundan kaynaklandığı söylenmez; yalnız usable answer bulunmadığı bilinir. Route ve TLS aşamaları başlamaz. Bu sonucu HTTP 500 veya application 404 diye sunmak request server’a ulaşmadan server sonucu üretmek olur. Connection failure ile application response farklı kanıt taşır.
WEB-22.01 · Red · URL’den güvenli connection’a ↗Bir request planının bağımlılıklarını izleDefterde raw input’u, parsed origin/target’ı, reference hostname’i, address kaynağını ve transport mode’u ayrı tut. Parser output’undan fragment’in request-target’a eklenmediğini kontrol et. Normal URL’ye açık :443 eklemek veya query value değiştirmek hangi record alanını etkiliyor karşılaştır. Bu kontrol URL API kapsamındadır; document navigation, mixed content policy veya certificate verification kanıtı değildir.
WEB-22.01 · Blue · URL’den güvenli connection’a ↗Failure reason ile güven sınırını kaydetPeer-failed örneğinde trustPath=true ile nameMatch=false birlikte kalır; chain koşulunun olumlu olması name mismatch’i kaldırmaz. No-address durumunda peer check not-evaluated’dır, failed değildir. Reused context’te freshHandshake=false ile selectedSuitable=true birlikte açıklanır. Bu sonuçlar aynı retry veya error sınıfına zorlanmaz; yerel predicate yalnız verilen ASCII name ve boolean input’lar için karar verir.
WEB-22.01 · Blue · URL’den güvenli connection’a ↗parsedURL API ile incelenen origin, path, query ve client fragment.
WEB-22.01 · URL’den güvenli connection’a ↗normalVerilen dependency sonuçları; application yetkisi değildir.
WEB-22.01 · URL’den güvenli connection’a ↗peerFailedTrust/path ile name match ayrı koşullardır.
WEB-22.01 · URL’den güvenli connection’a ↗reuseYeni handshake gerektirmeyen, uygun olduğu verilen connection context’i.
WEB-22.01 · URL’den güvenli connection’a ↗HTTP request her kutuda aynı knowledge değildirWEB-22.01 sonunda hazırlanan GET /notes/tea?view=compact planını izleyelim. Bu public read body taşımaz; #details server target’a girmez. HTTP/1.1 request line ve Host ile okunabilir gösterim sunar; HTTP/2 ve HTTP/3 aynı semantics’i farklı frame ve field düzenleriyle taşır. Client planının hazır olması edge’in request’i aldığı anlamına gelmez. İlk receipt yalnız edge’in bilgisini değiştirir.
WEB-22.02 · Core · HTTP’den handler’a ↗Runtime alınan request’i application kararına taşırNode http.Server içindeki IncomingMessage method, url ve headers sunar; bunlar router veya permission policy kurmaz. Runtime request’i kendi parser/API sınırında temsil eder. Application router method/path’i operation’a bağlar; /notes/tea ile view=compact query ayrı alanlardır. Seçilen read route’una gelen context public note ID’si ve presentation seçeneği taşır. Upstream header’ın varlığı principal verification değildir.
WEB-22.02 · Core · HTTP’den handler’a ↗Edge iznini object permission sanmakPublic request’in uygun upstream’e gitmesi, application object permission’ının doğrulandığı anlamına gelmez. Request amacı ve application operation için doğru policy owner karar vermelidir. WAF allow’u authenticated principal veya note-level authorization yerine koymak trust boundary’yi kaydırır. Bu örneğin başarılı representation’ları public’tir; private object erişimi edge cache ile doğrulanmaz. WEB-15 ve sonraki capstone’daki private policy application owner’da kalır.
WEB-22.02 · Red · HTTP’den handler’a ↗Handler’a ulaşmadan handler sonucu uydurmakCache hit’te service read sayısı 0’dır. Runtime log veya database read yapılmış gibi gösterilirse observation zincirine gerçekleşmemiş event eklenir. Maintenance closure edge’de durur; 403 sonucu application authorization denial ile aynı kanıt değildir. Route miss runtime’a ulaşır ama service çağırmaz. Debug ve review için status tek başına bu üç dalı ayırmaz.
WEB-22.02 · Red · HTTP’den handler’a ↗Operation zincirini receiver bilgisiyle doğrulaClient planındaki method, target ve public purpose edge defterine ancak request ulaştığında geçer. Edge policy kararını, cache source’u, seçilen application’ı ve runtime route match’i ayrı kaydet. Correlation alias credential değildir; raw header veya session değerleri yerine output’a uygun operation alanları seçilir. Karşılaştırma aynı public note ve compact query ile sınırlıdır; başka target’ın sonucu buraya taşınmaz.
WEB-22.02 · Blue · HTTP’den handler’a ↗Zero call ve missing observation farklıdırAçıkça recorded serviceCalls=0 varsa no-handler dalı bilinir; hiç log kaydı olmaması aynı sonucu vermez. Edge 403, cached 200 ve route 404 için result source’u koru. No-ready upstream örneği WEB-21.02 ile bağlantılıdır. Availability, edge policy ve application semantics tek failure kutusuna sıkıştırılmaz. State’in değişmediği sonucu yalnız bu ordinary read fixture’a aittir.
WEB-22.02 · Blue · HTTP’den handler’a ↗requestHTTP/1.1 semantics gösterimi; gerçek capture değildir.
WEB-22.02 · HTTP’den handler’a ↗origin.callOrderYerel adapter’da gözlenen normal control sırası.
WEB-22.02 · HTTP’den handler’a ↗cacheHitPublic cache representation’ı ve verilen freshness koşulu.
WEB-22.02 · HTTP’den handler’a ↗closed / routeMissEdge policy ile runtime router farklı ret sonuçlarının sahibidir.
WEB-22.02 · HTTP’den handler’a ↗Principal bilmek ile operation’a izin vermek ayrıDuru kendi sentetik reading note’unun title’ını Local draft’tan Tea note’a değiştirmek istiyor. Request context’in application’a ulaştığı kabul edilir. sid-demo inert session alias’ıdır; store lookup, verilen active flag ve logical expiry ile principal Duru elde edilir. Örnek gerçek login, cookie parsing veya cryptographic session verification çalıştırmaz. Soru tanınmış context’in sonraki application kararlarında nasıl sınırlandığıdır.
WEB-22.03 · Core · Identity’den persistence ve jobs’a ↗Commit, cache invalidation ve job ack zinciriCache’de revision 1 için Local draft bulunması database’in hâlâ o state’te olduğunu kanıtlamaz. Cache derived state’tir; note version ve invalidation owner’ı açık olmalıdır. Normal örnekte parameterized UPDATE ile outbox INSERT aynı SQLite transaction içindedir. Bağımsız reader COMMIT öncesi Local draft/revision 1 ve outbox 0; COMMIT sonrası Tea note/revision 2 ve event 1 görür. Bu düzenli yerel observation seçilen atomic boundary’yi gösterir; bütün crash, storage veya replication koşullarını test etmez.
WEB-22.03 · Core · Identity’den persistence ve jobs’a ↗Tanınmış session’dan sınırsız write hakkı çıkarmakNormal davranış tanınmış principal’ın kendi note’unu değiştirmesidir. Yetki bağı principal, object owner ve operation policy arasında kurulur. Session lookup başarılı diye owner check’i atlamak başka object üzerinde izin dışı mutation’a yol açabilir. Örnek sıradan denial context’iyle bu ayrımı gösterir. Kapsam seçilen owner policy’dir; bütün authorization modellerinin aynı rule’u kullandığı söylenmez.
WEB-22.03 · Red · Identity’den persistence ve jobs’a ↗Job teslimini ve derived cache’i commit sanmakPrepared write, COMMIT, outbox publication ve worker acknowledgment ayrı gözlemlerdir. Rollback durumunda title ve outbox birlikte eski kalmalıdır. Olmayan notification’ı yayımlanmış gibi göstermek downstream’i yanlış state’e bağlar. Normal dalda cache invalidation commit’ten sonra gelir. Process arada durursa cache stale kalabilir; gerçek recovery ve version policy ayrıca tasarlanır. Bu orderly fixture crash ölçmediğinden sürekli freshness garantisi vermez.
WEB-22.03 · Red · Identity’den persistence ve jobs’a ↗Principal’dan authoritative version’a kadar kanıtIntent defteri operation, object ID, principal kararı, owner policy sonucu ve expected/actual revision’ı bağlar. Expired authentication, authorization denial, business validation failure ve store rollback ayrı nedenlerdir. Session token veya user body bütünüyle kaydedilmez; output’a uygun alanlar seçilir. Normal karşılaştırma owner Duru, mevcut revision 1 ve Tea note title ile sınırlıdır; gerçek credential veya öğrenci verisi içermez.
WEB-22.03 · Blue · Identity’den persistence ve jobs’a ↗Outbox ve consumer sonucunu aynı alarmda ezmeOutbox committed intent’i, delivery attempt relay observation’ını, processed marker effect commit’ini ve ack queue state’ini anlatır. İki delivery ve tek projection effect benign retry için beklenen sonuç olabilir; otomatik incident verdict değildir. Note version ile event version’u eşleştir ve dedupe kapsamını operation/consumer ile belirt. Job delay note commit’ini invalid yapmaz; downstream freshness ayrıca gözlenir.
WEB-22.03 · Blue · Identity’den persistence ve jobs’a ↗session / policyInert session alias validity’si ile object/action ilişkisi ayrı kararlardır.
WEB-22.03 · Identity’den persistence ve jobs’a ↗queryParameterized query shape’i ile bind edilen title/id/revision data’sı.
WEB-22.03 · Identity’den persistence ve jobs’a ↗normalPending writer, bağımsız committed view ve derived cache.
WEB-22.03 · Identity’den persistence ve jobs’a ↗event / redeliveryOutbox intent, effect’e özgü dedupe ve ayrı acknowledgment.
WEB-22.03 · Identity’den persistence ve jobs’a ↗Response bir sonraki sahibine geçtiğindeWEB-22.01 URL ve peer seçimini, WEB-22.02 edge ile service yolunu, WEB-22.03 ise session, policy ve commit sınırını izledi. Burada server’ın hazırladığı public HTML browser’a ulaşır. Artık aynı byte’ların sahibi başka bir bileşendir: parser markup’ı işler; uygulama script’i veri ister; rendering sistemi görünür geometriyi üretir. Server’ın sonucu hazırlaması, browser’ın response’u alması ve kullanıcının güncel başlığı görmesi üç ayrı tamamlanma noktasıdır. Tea note için bunları tek bir yeşil “başarılı” kutuya indirmeyelim.
WEB-22.04 · Core · Response’tan pixels ve trust map’e ↗API yanıtı ve tam trust mapModule’un GET /api/public/notes/tea planı HTML navigation’dan ayrı bir request’tir. Response 200 ve JSON olması sözleşmeye uygun title bulunduğunu garanti etmez: body okunur, JSON ayrıştırılır ve title string kontrolü yapılır. title 7 gelen sıradan schema drift dalında Loading korunur, uygulama veri hatası açıklar. Fetch promise’in response ile resolve olması HTTP success, body consumption veya uygulama doğrulamasıyla eşit değildir. No-JS dalında ise shell parse edilir fakat API planı oluşmaz; service’in hazır olması bu bağımlılığı tamamlayamaz.
WEB-22.04 · Core · Response’tan pixels ve trust map’e ↗Yanıt doğruluğundan görünür sonucaNormal dal, beklenen verinin document context’inde title olarak kullanılmasıdır. Güven varsayımı server content’inin uygun schema ve amaçla yorumlanmasıdır. Bu koşul sağlanmazsa geçerli JSON ve status 200 olsa bile yanlış veya eski başlık görülebilir. Örnekte sayı title sıradan type uyuşmazlığıdır; görünür sonucun transport status’undan bağımsız olduğunu gösterir. Kontrol API contract ve consumer validation’dadır. Görünür metin data’yı text olarak kullanan DOM API veya uygun text serialization ile üretilir; HTML, JavaScript ve CSS farklı interpreter context’leridir.
WEB-22.04 · Red · Response’tan pixels ve trust map’e ↗Vendor code hangi yetkiyle çalışır?Public stylesheet, API data ve executable module aynı risk nesnesi değildir. Host document içinde kabul edilen executable third-party code için güven kararı yalnız network destination adına verilemez. Hangi vendor’ın code’u, hangi version, hangi document context ve hangi runtime erişimi aldığı önemlidir. Gerekli koşul o code’un gerçekten yüklenip çalışmasıdır; plan listesinde bir vendor adı görmek gerçekleşmiş execution kanıtı değildir. Optional dependency kapalıyken public title’ın çalışması sadece bu fixture’ın bağımsızlık sınırını gösterir.
WEB-22.04 · Red · Response’tan pixels ve trust map’e ↗Bytes, DOM ve pixels için ayrı kanıtTea note zincirinde Network response body ilk gözlem, Elements güncel DOM ikinci gözlem, rendering veya screenshot ise üçüncü gözlemdir. Request target, initiator, response status, media type, tüketilen title ve seçilmiş revision birlikte kayıt edilir. Network panel response’u gösterebilir fakat app validation sonucunu otomatik bilmez; Elements’te başlık değişmesi de server commit kanıtı değildir. Yerel parser title ve asset referanslarını gerçekten okur; browser’ın repair kuralları, script event loop’u, CSSOM, layout ve paint bu parser’ın kapsamı dışındadır.
WEB-22.04 · Blue · Response’tan pixels ve trust map’e ↗Bağımlılık dalını doğrulamakNo-JS dalında shell title Loading, API call sayısı 0’dır. Schema drift dalında API response vardır fakat title string kontrolü false olur. Optional vendor kapalıyken title Tea note kalır ve vendor request planı oluşmaz. Bunlar normal karşılaştırma dallarıdır; farklı görünüm tek başına incident değildir. Karşılaştırma aynı public note ve schema için geçerlidir. Revision, browser policy veya user context değişirse yeni koşullar açıkça kaydedilir; eski observation yeni durumun doğruluğunu kanıtlamaz.
WEB-22.04 · Blue · Response’tan pixels ve trust map’e ↗shellPublic başlangıç markup’ı ve asset referansları.
WEB-22.04 · Response’tan pixels ve trust map’e ↗normal/schemaDrift/noJsSeçilmiş tüketici sonuçları; browser capture değildir.
WEB-22.04 · Response’tan pixels ve trust map’e ↗trustMapHer veri okunun karar sahibi ve önceki ders ilişkisi.
WEB-22.04 · Response’tan pixels ve trust map’e ↗selectorSabit schema-ret kaydı seçimi; eksik veri unknown kalır.
WEB-22.04 · Response’tan pixels ve trust map’e ↗İzinli amaç ve sabit karşılaştırmaAssessment bu public title fixture’ının contract’ına yönelir: tea başlığı Tea note olmalı, optional vendor planı kapalı kalmalıdır. Manifest hangi sabit input’ların hangi amaçla ve hangi yerel işlemlerle inceleneceğini belirtir. Bu yetki başka application veya gerçek user verisine genişlemez. Application mapping bilinen data ve karar sahiplerini ilişkilendirir: title representation, consumer, fixture source ve evidence reviewer. URL’den pixels’a ders zinciri observation noktalarını açıklar; hepsinin burada ölçüldüğü anlamına gelmez.
WEB-22.S01 · Core · Evidence-led assessment ve regression review ↗Tool konumu ve sonuçların diliDevTools bir browser context’inde request, initiator ve live DOM gözlemi sağlayabilir. HTTP client response status/body görür ama browser DOM’u ve browser cookie/policy davranışını otomatik çalıştırmaz. Intercepting proxy izinli bağlantının belirli bir noktasını görebilir; o konum server business commit otoritesi değildir ve gözlemi kendi yapılandırmasıyla değişebilir. Bu araçların hiçbiri bu fixture’da çalıştırılmadı. Bir source satırı niyeti gösterebilir; runtime observation seçilmiş execution sonucunu; resource owner evidence ise persistence veya policy kararını gösterebilir. Kanıt türleri birbirinin yerine yazılmaz.
WEB-22.S01 · Core · Evidence-led assessment ve regression review ↗Test sınırının sessizce büyümesiNormal review, izinli sözleşmeyle aday artifact’in davranışını karşılaştırır. Güven varsayımı scope ve ölçümün aynı işin parçaları olmasıdır. Tek public title gözlemi bütün authz, tenant isolation veya persistence katmanına genişletilirse kanıtın kapsamadığı bir assurance oluşur. Engelleyici kontrol her matrix satırında observation point ve unknown alanlarını taşımaktır. Pixels beklenirken yalnız HTML source kontrol edilmişse test seçilmiş başlığı okuyabilir ama gerçek görünüme dair sonucu unknown bırakmalıdır. Bu boşluğu başarılı test sayısını artırarak kapatamayız.
WEB-22.S01 · Red · Evidence-led assessment ve regression review ↗Evidence dosyası ve anlam sınırıBir HAR, log export veya response capture inceleme için yararlı olabilir ama secrets ve kişisel data taşıma koşulu ayrıca değerlendirilir. Bu derste bu tür gerçek capture yoktur; yalnız sıradan public HTML ve booleans vardır. Scope manifest, gerekli data alanları, review amacı ve saklama sınırını belirler. Test sonucu ile source snippet’ini aynı rapora koymak evidence minimizasyonundan vazgeçmeyi gerektirmez. Hash candidate content’in eşitliğini kontrol eder; onu güvenilir vendor, yetkili user veya doğru business state yapan bir kimlik belgesi değildir.
WEB-22.S01 · Red · Evidence-led assessment ve regression review ↗Tekrar üretilebilir review paketiReview paketinde manifest, fixture byte’ları, contract, runtime version, observation listesi ve candidate hash’leri bulunur. Parser’ın okuduğu title da saklanır; yalnız pass etiketi tutulmaz. Comparator observed=None için unknown, observed=expected için pass, diğer ölçülen değerler için fail üretir. Before fail, after pass, eski title’a dönüşte regression fail olur. Optional vendor planı üç adayda false’tur. Database revision ve pixels için observation yoktur; toplam pass sayısı bu unknown alanları içine almaz.
WEB-22.S01 · Blue · Evidence-led assessment ve regression review ↗Retest, regression ve kapanış kararıRetest aynı soruya aynı seed ve contract ile döner. Regression review optional dependency planını ve eski title’a geri dönüşü de kontrol eder. Bu dört matrix boyutu dışındaki davranışlar kapsamda değildir. Context değişince comparable=false yazılır, success üretilmez. Fail için candidate byte’ları, expected/observed ve ilgili owner belirtilir. After candidate pass verdiğinde önceki failing artifact’in kimliği korunur. Yalnız son yeşil screenshot veya test sayısı neyin yanlış olduğunu ve hangi candidate’ın değiştiğini açıklamaz.
WEB-22.S01 · Blue · Evidence-led assessment ve regression review ↗manifestİzinli amaç, seed, beklenti ve yerel işlem sınırı.
WEB-22.S01 · Evidence-led assessment ve regression review ↗candidatesBefore/after/regression için public HTML byte’ları.
WEB-22.S01 · Evidence-led assessment ve regression review ↗matrixÖlçülen pass/fail ile unknown ayrı sonuçlardır.
WEB-22.S01 · Evidence-led assessment ve regression review ↗contextChangedDeğişen seed aynı controlled comparison değildir.
WEB-22.S01 · Evidence-led assessment ve regression review ↗findingVerilen neden/fix açıklaması ile gözlenen heading sonucu ayrı tutulur.
WEB-22.S01 · Evidence-led assessment ve regression review ↗selectorSınırlı fail seçimi; eksik defter assurance sağlamaz.
WEB-22.S01 · Evidence-led assessment ve regression review ↗Cookie ile session
| Boyut | Cookie | Session |
|---|---|---|
| State sahibi | Browser cookie jar | Application ve session store |
| Taşınan bilgi | Request’te name/value çiftleri | Opaque handle’ın referans verdiği authoritative kayıt |
| Sonlandırma | Cookie expiry veya Browser’dan kaldırma | Server expiry veya revocation kararı |
Origin ile site
| Boyut | Origin | Site |
|---|---|---|
| HTTP(S) sınırı | Scheme + hostname + etkin port | Scheme + registrable domain |
| Port etkisi | Farklı etkin port farklı origin olabilir | Schemeful site port ile ayrılmaz |
| Yorum | Same-origin olmak erişim kararlarında bir girdidir | Same-site olmak cookie policy’de bir girdidir |
Response paylaşımı ile object izni
| Boyut | CORS | Object authorization |
|---|---|---|
| Karar veren | CORS sözleşmesini uygulayan Browser | Subject/action/object policy’sini uygulayan server |
| Soru | Bu origin’deki script response’u okuyabilir mi? | Bu subject bu action’ı bu object üzerinde yapabilir mi? |
| Gerekli kanıt | Final response CORS gate sonucu | Authoritative authorization kararı |