Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-09.01

Proxy rolleri ve forwarded context

Proxy’nin kimin adına seçildiğini, message’da hangi alanı değiştirdiğini ve forwarded context’i hangi provenance ile taşıdığını ayır.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Owned chain

  1. Başlangıç context’i

    Client GET /notes için hazırdır. Atlas edge ve proxy henüz bu request’i almadı; application dış client veya scheme bilgisini kabul etmiş değildir. Sonuç ancak message ulaştıktan ve yerel provenance kontrolü tamamlandıktan sonra oluşur.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    Owned edge idle; own observations ready
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Application idle; derived context unused
  2. Request edge’e ulaştı

    Browser’ın HTTP message’ı Atlas edge’e ulaştı; dışarıdan gelen forwarded context doğrulanmış bilgi olarak kabul edilmedi.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    Request received; external context untrusted pending
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Application idle; derived context unused
  3. Yeni context kuruldu

    Atlas edge doğruladığı authority ve gözlediği scheme ile alanları kurar; client node 192.0.2.10’dur, kullanıcı authentication sonucu değildir.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=192.0.2.10; proto=https
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Application idle; derived context unused
  4. Yeni request alındı

    Edge’in yeniden oluşturduğu message reverse proxy’ye ulaştı; local peer ve topology değerlendirmesi henüz tamamlanmadı.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=192.0.2.10; proto=https
    Owned proxy
    Edge message received; provenance gate pending
    Application
    Application idle; derived context unused
  5. Proxy hop’u eklendi

    Edge izin verilen peer’dir ve channel bütünlüğü korunmuştur; proxy, gelen peer context’ini listenin en sağına ekler.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=192.0.2.10; proto=https
    Owned proxy
    Edge trusted; second element appended; for=198.51.100.20
    Application
    Application idle; derived context unused
  6. Forwarded message alındı

    İki element taşıyan message application’a ulaştı; message’ı almak, içindeki context’in güvenilirliğini kabul etmek değildir.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=192.0.2.10; proto=https
    Owned proxy
    Edge trusted; second element appended; for=198.51.100.20
    Application
    Message received; context acceptance pending
  7. Application context kararı

    Doğrudan peer, transport bütünlüğü, topology ve edge’in yeniden kurduğu alanlar uygun olduğu için context kabul edilir. Kullanıcı izni ayrı bir kontroldür.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=192.0.2.10; proto=https
    Owned proxy
    Edge trusted; second element appended; for=198.51.100.20
    Application
    Context accepted; client=192.0.2.10; userAuth=false; resourceAuth=false

Privacy alias

  1. Başlangıç context’i

    Client GET /notes için hazırdır; bu dalda edge kendi request’e özgü _atlasOnce alias’ını kullanacaktır. Alias henüz application’a ulaşmadı. Context kabul edilse bile kalıcı kullanıcı kimliği veya resource izni üretilmez.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    Owned edge idle; own observations ready
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Application idle; derived context unused
  2. Request edge’e ulaştı

    Browser’ın HTTP message’ı Atlas edge’e ulaştı; dışarıdan gelen forwarded context doğrulanmış bilgi olarak kabul edilmedi.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    Request received; external context untrusted pending
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Application idle; derived context unused
  3. Yeni context kuruldu

    Atlas edge doğruladığı authority ve gözlediği scheme ile alanları kurar; client node için _atlasOnce alias’ı kullanılır, bu kullanıcı authentication sonucu değildir.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=_atlasOnce; proto=https
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Application idle; derived context unused
  4. Yeni request alındı

    Edge’in yeniden oluşturduğu message reverse proxy’ye ulaştı; local peer ve topology değerlendirmesi henüz tamamlanmadı.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=_atlasOnce; proto=https
    Owned proxy
    Edge message received; provenance gate pending
    Application
    Application idle; derived context unused
  5. Proxy hop’u eklendi

    Edge izin verilen peer’dir ve channel bütünlüğü korunmuştur; proxy, gelen peer context’ini listenin en sağına ekler.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=_atlasOnce; proto=https
    Owned proxy
    Edge trusted; second element appended; for=198.51.100.20
    Application
    Application idle; derived context unused
  6. Forwarded message alındı

    İki element taşıyan message application’a ulaştı; message’ı almak, içindeki context’in güvenilirliğini kabul etmek değildir.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=_atlasOnce; proto=https
    Owned proxy
    Edge trusted; second element appended; for=198.51.100.20
    Application
    Message received; context acceptance pending
  7. Application context kararı

    Doğrudan peer, transport bütünlüğü, topology ve edge’in yeniden kurduğu alanlar uygun olduğu için context kabul edilir. Kullanıcı izni ayrı bir kontroldür.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    External context discarded; first rebuilt; for=_atlasOnce; proto=https
    Owned proxy
    Edge trusted; second element appended; for=198.51.100.20
    Application
    Context accepted; client=_atlasOnce; userAuth=false; resourceAuth=false

Peer onaylı değil

  1. Başlangıç context’i

    Onaylanmamış local peer normal GET /notes message’ını application’a göndermek üzeredir. Edge ve proxy üzerinden kurulmuş bir provenance zinciri yoktur; application henüz message almadı veya derived context kararı vermedi.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    Owned edge idle; own observations ready
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Application idle; derived context unused
  2. Message application’da

    Farklı bir local peer application’a typed message ulaştırır. Alan byte’ları gösterilmez; doğrudan peer’in kim olduğu ayrı bir girdidir.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    Owned edge idle; own observations ready
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Message received; immediate peer unapproved-local-peer
  3. Peer kontrolü başarısız

    approvedPeer=false ve approvedTopology=false olduğundan bu context kullanılmaz. Bir alanın parse edilmiş olması onu güvenilir yapmaz.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    Owned edge idle; own observations ready
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Context accepted=false; derived client/scheme absent
  4. Connection bilgisi ayrı

    Application doğrudan peer bilgisini ayrı tutar; dış scheme veya client identity türetmez. Resource authorization sonucu bu sahnede verilmez.

    Client / local peer
    Normal GET /notes hazır; external context untrusted
    Owned edge
    Owned edge idle; own observations ready
    Owned proxy
    Owned proxy idle; edge gate not evaluated
    Application
    Direct peer retained; userAuth=false; resourceAuth=false

ROLLER · STATE · VERİ AKIŞI

Intermediary aynı programda iki rol kurar

HTTP 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.

Request origin yönüne (inbound), response browser yönüne (outbound) ilerler; connection’lar önceden açık olabilir ve yeniden kullanılabilir. RFC’de upstream/downstream, message’ın akışına göre tanımlanır; reverse-proxy configuration’ında upstream diye adlandırılan sabit hedefle aynı şey değildir. Aynı upstream connection’daki request’leri aynı kullanıcıya ait sayma: intermediary birçok client’ın request’lerini aynı connection pool’da birleştirebilir. Örnekteki okuma request’i bu ayrımı gösterir. Application’ın doğrudan bağlandığı peer, kullanıcının istediği public authority ve proxy’nin yeniden oluşturduğu context ayrı alanlardır.

Forward proxy client tarafından seçilir

Forward 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.

CONNECT target, origin request authority ve proxy’nin kendi authentication context’i farklıdır. Proxy’ye giriş yapmak, origin resource’una erişim izni vermez. Rol tablosunda client’ın seçtiği forwarder ile şifreli byte’ları içeriğini görmeden taşıyan tunnel bu yüzden ayrıdır. Tunnel’da TLS peer’leri browser ve origin olarak kalabilir; inspection için farklı bir architecture gerekir. Tablo bu rolleri karşılaştırır, bir CONNECT alışverişini çalıştırmaz.

Reverse proxy service tarafında seçilir

Reverse 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.

Reverse proxy, public authority’yi izin verilen bir mapping ile upstream’e taşıyabilir veya upstream için başka bir authority kullanabilir. Bu gateway davranışını client’ın seçtiği forward proxy’nin target koruma kurallarıyla aynı sayma. Örnekte public authority notes.example.org olarak kalırken application’ın doğrudan bağlandığı peer proxy.example.org’dur. Application route seçerken ve link üretirken hangi ismi kullandığını bilmelidir.

Transparent adı plaintext erişimini kanıtlamaz

Gü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.

TLS inspection kullanılan bir architecture’da browser’ın trust context’i ve TLS’yi terminate eden peer değişir. Pass-through tunnel ise application’ın TLS endpoint’lerini koruyabilir. Rol tablosundaki “client seçmeden yönlendirme” ile “plaintext erişimi koşula bağlı” alanları bu nedenle ayrıdır. Bu ayrım bir trust store kurulumu veya interception işlemi göstermez; rol adından cryptographic guarantee çıkarılamayacağını anlatır.

Forwarded message kendi hop context’ini taşır

Intermediary, 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.

RFC7239 Forwarded list’inde katılan ilk proxy’nin element’i solda, sonradan ekleyen proxy’lerin element’leri sağdadır. for, o proxy’ye request yapan node’u; by, client-facing interface’i; host, aldığı Host context’ini; proto ise gelen protocol’ü anlatır. Her proxy bu optional alanı eklemeyebilir. Bu yüzden element sayısı toplam network hop sayısı değildir. IPv6 adresinde bracket ve colon bulunduğu için quoted-string gerekir. Örnek yalnız kurallı, typed IPv4 verisini gösterir; bütün header syntax’ını işleyen bir parser değildir.

Forwarded ve X-Forwarded-* için provenance

X-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.

Atlas’ın yönettiği edge, dışarıdan gelen forwarded context’i doğrulanmamış bir assertion olarak ayırır. Kendi gözlediği client endpoint’i, doğruladığı public authority ve gelen scheme ile yeni alanları kurar. Atlas reverse proxy, edge’in channel identity’sini ve topology policy’sini kabul ettikten sonra kendi hop element’ini ekler. Application ancak doğrudan peer izin verilen peer olduğunda ve internal transport’un bütünlüğü korunduğunda bu zinciri context olarak kullanır. Resource için kullanıcı authentication ve authorization kontrolleri ayrıca yapılır.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

Approved chain

  1. External assertion ile edge gözlemi ayrıldı

    GET /notes request’i external context class’ı untrusted olarak taşır; external bytes gösterilmez. Edge approvedAuthority notes.example.org, observed endpoint 192.0.2.10 ve incoming scheme https bilgisini kendi gözleminden kurar.

    Hop context
    External assertion untrusted / edge observes context
    Provenance gate
    Review bekliyor
    Identity boundary
    Verdict yok
  2. Reconstruction tek açık policy’den yapıldı

    Edge incoming forwarded context’i atar ve owned observations’dan yeniden kurar. Bu policy her unknown HTTP field’ı silmez; Accept application/json, GET ve /notes anlamı korunur. Connection close bu hop’a aittir ve outbound’da taşınmaz.

    Hop context
    External assertion untrusted / edge observes context
    Provenance gate
    Edge rebuild / GET-path-Accept preserved
    Identity boundary
    Verdict yok
  3. Header parsing user authentication sayılmadı

    Normal contextAccepted true olabilir; userAuthenticated ve resourceAuthorized false kalır. Provenance control, client endpoint ve scheme yorumunu sınırlar. Bir doğru context, authenticated principal veya object grant’i üretmez.

    Hop context
    External assertion untrusted / edge observes context
    Provenance gate
    Edge rebuild / GET-path-Accept preserved
    Identity boundary
    Context accepted / user=false / resource=false
  4. İkinci writer kendi incoming hop’unu tanımladı

    Owned proxy appended element’te forNode 198.51.100.20, by 203.0.113.30 verir. Her element writer’ın incoming context’ine aittir. İlk adresi her topology’de gerçek client diye seçmek genel güvenlik kuralı değildir.

    Hop context
    Writers: owned-edge then owned-proxy
    Provenance gate
    Edge rebuild / GET-path-Accept preserved
    Identity boundary
    Context accepted / user=false / resource=false
  5. Trusted conjunction açık koşullarla değerlendirildi

    Approved immediate peer, secured internal transport, approved topology ve edge reconstruction birlikte true’dur. Bu bounded chain için derived context kullanılabilir. Forwarded list’i bütün network route’unun veya yazmayan hop’ların kanıtı değildir.

    Hop context
    Writers: owned-edge then owned-proxy
    Provenance gate
    Peer + transport + topology + rebuild = true
    Identity boundary
    Context accepted / user=false / resource=false
  6. Acceptance kapsamı identity’ye genişletilmedi

    Derived client 192.0.2.10 ve scheme https bu sabit topology için kabul edilir. NAT veya proxy context’i endpoint’i account kimliğine dönüştürmez. Protected request için bağımsız trusted principal ve resource policy evidence gerekir.

    Hop context
    Writers: owned-edge then owned-proxy
    Provenance gate
    Peer + transport + topology + rebuild = true
    Identity boundary
    Derived context accepted / authn-authz separate

Unapproved peer

  1. Aynı typed context farklı peer’den geldi

    unapproved-peer case’i immediatePeer unapproved-local-peer verir. Request method ve path normaldir; kötü header değeri eklenmez. Parse edilebilir context ile güvenilir writer farklı sorulardır.

    Hop context
    Immediate peer unapproved-local-peer
    Provenance gate
    Review bekliyor
    Identity boundary
    Verdict yok
  2. Channel başarısı diğer koşulları telafi etmedi

    securedInternalTransport true olsa da approvedPeer ve approvedTopology false’tur; edgeReconstructed da false’tur. Conjunction tamamlanmaz. Güvenli görünen channel, provenance şartlarının atlanmasına izin vermez.

    Hop context
    Immediate peer unapproved-local-peer
    Provenance gate
    Transport true / peer-topology-rebuild false
    Identity boundary
    Verdict yok
  3. Derived context kullanılmadı

    contextAccepted false olur; derivedClient ve derivedScheme null kalır. Bu sonuç connection facts’ini silmez, yalnız untrusted derivation’ı kullanmaz. Application request receipt ile policy acceptance tek alan olarak yazılmaz.

    Hop context
    Immediate peer unapproved-local-peer
    Provenance gate
    Transport true / peer-topology-rebuild false
    Identity boundary
    Context rejected / derived values null
  4. List syntax provenance eksikliğini kapatmadı

    Forwarded ile X-Forwarded-* aynı uniform syntax değildir. Bağımsız lists’i index index zip etmek host, proto ve node ilişkisini yanlış kurabilir. Via ile Forwarded için de otomatik aynı-hop eşlemesi yapılmaz.

    Hop context
    Syntax and list positions do not establish writer trust
    Provenance gate
    Transport true / peer-topology-rebuild false
    Identity boundary
    Context rejected / derived values null
  5. Deployment değişimi trust koşulunu yeniden açtı

    Bu profile explicit peer aliases ve sabit topology kullanır. Trusted hop count, topology değişince yanlış peer’i seçebilir. Control, incoming provenance ve reconstruction contract’ını gerçekten sahip olunan observations’a bağlamaktır.

    Hop context
    Syntax and list positions do not establish writer trust
    Provenance gate
    Explicit peer/topology contract required
    Identity boundary
    Context rejected / derived values null
  6. Negative outcome saldırı attribution’ı olmadı

    Bu normal typed negative case, derived context’in kullanılmadığını gösterir. Gerçek proxy veya network trust verification çalıştırılmaz. User ve resource decisions false kalır; bir provenance rejection’dan actor niyeti çıkarılmaz.

    Hop context
    Syntax and list positions do not establish writer trust
    Provenance gate
    Explicit peer/topology contract required
    Identity boundary
    Derived context withheld / intent unknown

VARSAYIM · SINIR · KONTROL

Context’i identity’ye dönüştüren varsayım

Forwarded 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.

Necessary conditions selected chain için immediate peer identity, approved topology, secured internal transport ve owned reconstruction policy’sidir. Birisi false ise application derived external context’i kullanmaz; direct connection facts ayrı kalır. Bu outcome gerçek saldırı veya bypass evidence değildir, control boundary’sinin şartlarını gösterir. Header’ı auth proof sayma yerine application principal evidence’ını bağımsız kur.

Hop sırası bütün route’un kanıtı değildir

Forwarded 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.

X-Forwarded-* conversion’da bağımsız listeleri keyfi zip etmek host, protocol ve node ilişkisinin yanlış kurulmasına yol açabilir. Via list’ini de Forwarded ile index index birleştirme. Bu riskleri öğrenciye göstermek için gerçek header mutation workflow’ü gerekmez: hangi relationship’in kaynak tarafından garanti edildiğini ve hangisinin local policy olduğunu belirtmek yeterlidir.

Context’in gizlilik ve retention etkisi

Client 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.

Model derived context accepted olsa bile business authorization false kalır. Böylece positive topology evidence’ın başka policy domain’ına yayılması engellenir. Review’da “header doğru” ile “bu veriyi tutmaya ihtiyaç var” sorularını ayrı cevapla; metadata’nın client’a response içinde geri döndürülmesi internal topology ve endpoint bilgisi açabilir.

3. Blue · Güvenli geliştirme ve savunma

Hareket olmadan bütün senaryoları oku

Writer review

  1. Writer ile direct peer aynı satırda okundu

    İ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. İlk element writer owned-edge, observedDirectPeer 192.0.2.10’dur. İkinci writer owned-proxy, direct peer 198.51.100.20’dir. Review listed client ile immediate peer’i aynı kişi gibi birleştirmez.

    Writer ledger
    Two participating writers / two direct peers
    Provenance comparison
    Review bekliyor
    Evidence scope
    Verdict yok
  2. Normal field ilişkileri policy ile karşılaştırıldı

    Edge reset/reconstruct ve proxy append, sabit chain’in contract’ıdır. approvedAuthority ile forwarded host notes.example.org eşleşir. Bu matching arbitrary Internet chain’i veya bütün intermediary davranışını doğrulamaz.

    Writer ledger
    Two participating writers / two direct peers
    Provenance comparison
    Owned rebuild + append / approved authority matches
    Evidence scope
    Verdict yok
  3. Role label plaintext access garantisi sayılmadı

    Forward proxy client configuration ile seçilebilir; CONNECT tunnel opaque kalabilir. Reverse proxy bu seçilmiş termination profile’da plaintext okuyabilir. Role adını tek başına TLS interception evidence diye kullanmak yanlış scope’tur.

    Writer ledger
    Role selection ≠ universal plaintext access
    Provenance comparison
    Owned rebuild + append / approved authority matches
    Evidence scope
    Verdict yok
  4. Negative case conjunction şartını sınadı

    Unapproved peer satırında transport true ama diğer required koşullar false’tur; derived values null kalır. Normal ve negative sonuçlar control’ün ayrı predicate’lerini sınar. Bunlar general header parser testleri değildir.

    Writer ledger
    Role selection ≠ universal plaintext access
    Provenance comparison
    Approved accepts / unapproved withholds derivation
    Evidence scope
    Verdict yok
  5. Missing writer evidence sonucu sınırladı

    Yeni bir trace’te writer identity veya reconstruction evidence yoksa normal fixture’ın relationship’i aktarılmaz. Derived-client provenance UNKNOWN kalır. Header text mevcutken bile observation source bilinmeden identity hükmü verilmez.

    Writer ledger
    Role selection ≠ universal plaintext access
    Provenance comparison
    Approved accepts / unapproved withholds derivation
    Evidence scope
    UNKNOWN without writer/reconstruction coverage
  6. Regression minimum provenance evidence’a bağlandı

    Immediate peer role, trusted channel outcome, reconstruction kararı ve bounded correlation yeterli olabilir. Full chain’i response’a kopyalamak veya session secret toplamak gerekmez. Gerçek proxy integration claim’i ayrıca owned runtime evidence ister.

    Writer ledger
    Role selection ≠ universal plaintext access
    Provenance comparison
    Approved accepts / unapproved withholds derivation
    Evidence scope
    Needed: peer/channel/rebuild/correlation scope

Privacy alias

  1. Per-request alias identity’den ayrıldı

    İ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. Privacy case’inde derivedClient _atlasOnce olur; stableUserIdentity false’tur. Bu alias normal provenance sonucunu korurken original IP bilgisini taşımaz. Stable tracking identity veya principal olarak yorumlanmaz.

    Writer ledger
    Derived client _atlasOnce / stable identity false
    Provenance comparison
    Review bekliyor
    Evidence scope
    Verdict yok
  2. Privacy seçimi acceptance predicate’ini değiştirmedi

    Approved peer, secured transport, topology ve reconstruction yine true’dur. contextAccepted true olur; derivedScheme https kalır. Trust outcome’un aynı kalması IP retention’ın zorunlu olmadığını bu seçilmiş profile’da gösterir.

    Writer ledger
    Derived client _atlasOnce / stable identity false
    Provenance comparison
    Context accepted / scheme https / IP omitted
    Evidence scope
    Verdict yok
  3. Original endpoint’in yokluğu alarm sayılmadı

    Per-request obfuscation deliberate minimization’dır. Bu field’da original IP beklemek normal privacy branch’ini missing-data failure diye etiketler. Observer, seçilmiş retention policy’yi correlation ihtiyacıyla birlikte okur.

    Writer ledger
    IP deliberately absent / no stable tracking claim
    Provenance comparison
    Context accepted / scheme https / IP omitted
    Evidence scope
    Verdict yok
  4. Client response echo koşulu ayrıca kontrol edildi

    responseEchoAllowed false’tur. Internal chain’i reader’a döndürmek acceptance’ın sonucu değildir. Diagnostic kayıt ile public response farklı recipient scope’larına aittir; metadata minimization her ikisi için ayrı sorulur.

    Writer ledger
    IP deliberately absent / no stable tracking claim
    Provenance comparison
    Response echo disallowed
    Evidence scope
    Verdict yok
  5. Privacy outcome authn veya authz sayılmadı

    User authenticated ve resource authorized bu profile’da false kalır. Alias’ın düzgün kullanılması access grant sağlamaz. Privacy kararı ile protected request authority aynı control değil, farklı sahiplerin koşullarıdır.

    Writer ledger
    IP deliberately absent / no stable tracking claim
    Provenance comparison
    Response echo disallowed
    Evidence scope
    Privacy preserved / authn-authz false
  6. Evidence sonucu seçilmiş topology’de kaldı

    Bu privacy branch sabit typed context üzerinde incelenir; gerçek proxy, arbitrary parser veya network trust verification ölçülmez. Başka topology’de aynı alias policy’nin yeterli olması ayrıca kanıtlanmalıdır.

    Writer ledger
    IP deliberately absent / no stable tracking claim
    Provenance comparison
    Response echo disallowed
    Evidence scope
    Fixed privacy contract / external topology unknown

UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA

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.

Internal writers’ın hangi fields’i preserve veya append edeceğini kayıt altına al. Application immediate peer’i ve channel provenance’ını trusted kabul etmeden derived context’i işleme sokmasın. Trusted-hop-count gibi implementation seçenekleri otomatik genel güvenlik çözümü değildir; deployment topology değişince aynı count yanlış peer’e güvenebilir. Selected fixture explicit peer aliases ve fixed chain kullanır, arbitrary header parser değildir.

Regression provenance kararını gözlemlesin

Normal 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.

Positive evidence approved peer + secured hop + rebuilt first element ilişkisidir. Negative evidence external scheme ve client endpoint’in provenance olmadan kullanılmamasıdır. User authenticated ve resource authorized sonuçları bu fixture’de false bırakılır; application’ın başka katmanından gelecek evidence burada üretilmez. Bu ayrım gerçek integration test’inde neyin ayrıca ölçülmesi gerektiğini de belirler.

Forwarding uyumluluğunu ve privacy’yi koru

HTTP/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.

Logs’ta full chain yerine outcome category, immediate peer role ve gerektiğinde bounded correlation kullan. Per-request obfuscated for alias privacy branch’inde doğru trust outcome’u korur ama original IP bilgisi deliberately absent olur. Response’a Forwarded chain’i kopyalama. Böylece data minimization, diagnostics ve application authorization birbirine karışmadan sürdürülebilir.

ŞİMDİ VAKAYA UYGULA

Forwarded client, direct peer ve authenticated subject neden ayrı tutulur?

Kontrolümüzdeki edge, /notes için external context’i atıp kendi endpoint ve scheme gözlemlerinden yeniden kurar. Kontrolümüzdeki proxy bir element ekler. Application bu iki writer’ın provenance koşullarını değerlendirir; privacy branch’inde client endpoint yerine _atlasOnce kullanılır.

Vakadaki representation hangi cache owner’dan geliyor? Key kapsamı, freshness ve kullanıcının context’ini birlikte değerlendir; hit olması doğru viewer’a ait olduğunu kanıtlamaz.

Bağlı vaka dosyasını aç ↗

ÖRNEĞİ BİRLİKTE OKUYALIM

Atlas · Proxy rolleri ve forwarded context

Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.

Ham kaydı ve alan açıklamalarını oku
{
  "profile": {
    "httpVersion": "HTTP/1.1 teaching representation",
    "actualProxyNetworkRun": false,
    "arbitraryHeaderParserRun": false
  },
  "roles": [
    {
      "role": "forward-proxy",
      "selection": "client configuration",
      "tlsPlaintextAccess": "not implied; CONNECT tunnel can remain opaque"
    },
    {
      "role": "reverse-proxy",
      "selection": "service routing",
      "tlsPlaintextAccess": "yes in selected termination profile"
    },
    {
      "role": "interception-proxy",
      "selection": "network redirect without client selection",
      "tlsPlaintextAccess": "conditional architecture, not implied"
    },
    {
      "role": "semantically-transparent",
      "selection": "historical semantic usage",
      "tlsPlaintextAccess": "not a peer guarantee"
    }
  ],
  "inputMessage": {
    "method": "GET",
    "path": "/notes",
    "authority": "notes.example.org",
    "fields": {
      "Connection": "close",
      "Accept": "application/json"
    },
    "incomingExternalContextClass": "untrusted external assertion",
    "incomingExternalContextBytesIncluded": false
  },
  "edgePolicy": {
    "discardIncomingForwardedContext": true,
    "reconstructFromOwnedObservations": true,
    "approvedAuthority": "notes.example.org",
    "observedClientEndpoint": "192.0.2.10",
    "observedIncomingScheme": "https"
  },
  "edgeOutbound": {
    "method": "GET",
    "path": "/notes",
    "fields": {
      "Accept": "application/json",
      "Forwarded": "for=192.0.2.10;by=198.51.100.20;host=notes.example.org;proto=https"
    }
  },
  "forwardedElements": [
    {
      "forNode": "192.0.2.10",
      "by": "198.51.100.20",
      "host": "notes.example.org",
      "proto": "https",
      "writer": "owned-edge",
      "observedDirectPeer": "192.0.2.10"
    },
    {
      "forNode": "198.51.100.20",
      "by": "203.0.113.30",
      "host": "notes.example.org",
      "proto": "https",
      "writer": "owned-proxy",
      "observedDirectPeer": "198.51.100.20"
    }
  ],
  "proxyOutbound": {
    "fields": {
      "Accept": "application/json",
      "Forwarded": "for=192.0.2.10;by=198.51.100.20;host=notes.example.org;proto=https, for=198.51.100.20;by=203.0.113.30;host=notes.example.org;proto=https"
    }
  },
  "legacyConventions": {
    "names": [
      "X-Forwarded-For",
      "X-Forwarded-Proto",
      "X-Forwarded-Host"
    ],
    "uniformNormativeSyntax": false,
    "arbitraryListsCanAlwaysBeLosslesslyConverted": false
  },
  "privacy": {
    "perRequestForAlias": "_atlasOnce",
    "stableUserIdentity": false,
    "responseEchoAllowed": false
  },
  "cases": [
    {
      "case": "normal",
      "immediatePeer": "owned-proxy",
      "approvedPeer": true,
      "securedInternalTransport": true,
      "approvedTopology": true,
      "edgeReconstructed": true,
      "contextAccepted": true,
      "derivedClient": "192.0.2.10",
      "derivedScheme": "https",
      "userAuthenticated": false,
      "resourceAuthorized": false
    },
    {
      "case": "unapproved-peer",
      "immediatePeer": "unapproved-local-peer",
      "approvedPeer": false,
      "securedInternalTransport": true,
      "approvedTopology": false,
      "edgeReconstructed": false,
      "contextAccepted": false,
      "derivedClient": null,
      "derivedScheme": null,
      "userAuthenticated": false,
      "resourceAuthorized": false
    },
    {
      "case": "privacy",
      "immediatePeer": "owned-proxy",
      "approvedPeer": true,
      "securedInternalTransport": true,
      "approvedTopology": true,
      "edgeReconstructed": true,
      "contextAccepted": true,
      "derivedClient": "_atlasOnce",
      "derivedScheme": "https",
      "userAuthenticated": false,
      "resourceAuthorized": false
    }
  ]
}
roles
Role seçimi plaintext access garantisi değildir.
forwardedElements
Participating writer’lar soldan sağa sıralıdır; her element kendi incoming context’ini tarif eder.
cases
Approved peer/topology/transport/reconstruction conjunction; user permission ayrı kalır.

Owned fixed topology ve typed normal context’tir; general Forwarded parser, gerçek proxy, client-header mutation veya network trust verification yoktur. Context acceptance authentication ve authorization değildir.

İki yanlış kanı

Forwarded içindeki ilk IP authenticated user’dır.

Alan context assertion’ıdır; NAT/proxy ve provenance user authentication’ın yerine geçmez.

Transparent proxy her HTTPS body’sini okur.

Interception selection, TLS termination ve opaque tunnel farklı architecture koşullarıdır.

SIRA SENDE

Bu hikâyeyi sen çöz.

Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.

Doğrudan peer onaylı değil. Bu profile göre Forwarded context kabul edilir mi?

  1. Evet. Forwarded standard header olduğu için her writer güvenilirdir.
  2. Hayır. Türetilen client ve scheme null kalır.
Gerekçeli cevabı oku

Hayır. Türetilen client ve scheme null kalır. — Onaylı peer, topology ve edge reconstruction koşulları kurulmamıştır; contextAccepted=false.

İkinci Forwarded element’te forNode neden ilk client IP’si değil?

Dersten seçilen artifact alanları; öğretim örneği

forwardedElements[0]
{"forNode":"192.0.2.10","by":"198.51.100.20","host":"notes.example.org","proto":"https","writer":"owned-edge","observedDirectPeer":"192.0.2.10"}
forwardedElements[1]
{"forNode":"198.51.100.20","by":"203.0.113.30","host":"notes.example.org","proto":"https","writer":"owned-proxy","observedDirectPeer":"198.51.100.20"}
  1. İkinci proxy’nin direct peer’ı edge’dir.
  2. Her element original client IP’sini tekrar etmek zorundadır.
Gerekçeli cevabı oku

İkinci proxy’nin direct peer’ı edge’dir. — Bu topology’de önce edge, sonra proxy kendi gözlemini ekler. Chain, bu onaylı hop sırasıyla yorumlanır.

Forward proxy CONNECT tunnel ile reverse proxy TLS termination’ı plaintext görünürlüğü açısından karşılaştır.

Gerekçeli cevabı oku

Client’ın seçtiği forward proxy, CONNECT tunnel içindeki TLS plaintext’ini görmeyebilir. Reverse proxy TLS’yi terminate ediyorsa o hop’un plaintext’ini okuyabilir. Arada bulunmak tek başına TLS decryption kanıtı değildir. Kabul edilmiş Forwarded context de kullanıcı authentication veya resource authorization sonucu değildir.

□ Proxy role’ü ile termination mimarisini ayırdım.

□ Forwarded context’i kullanıcı izni saymadım.

Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç

Kaynaklar ve kapsam

  • HTTP Semantics3.3 Connections, Clients, and Servers; 3.7 Intermediaries · 4.2.2 https; 4.3.4 Certificate Verification · 7.4 Rejecting Misdirected Requests · 7.6.1 Connection; 7.6.3 Via; 7.7 Message Transformations · 9.3.6 CONNECT
  • Forwarded HTTP Extension4 Forwarded HTTP Header Field · 5.1 by; 5.2 for; 5.3 host; 5.4 proto · 7.1 HTTP Lists; 7.3 Relation to Via; 7.4 Transition · 8.1 Header Validity and Integrity; 8.2 Information Leak; 8.3 Privacy
  • HTTP/1.1 — historical terminology only (obsolete)1.3 Terminology: transparent proxy and semantically transparent cache, historical only