Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-16.S02

Command, template ve XML interpretation boundaries

Executable, template source, XML grammar ve kabul edilen verinin farklı sahiplerini izle.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Sabit child

  1. Yorumlama isteği hazır

    Örnekte command profili ve O'Reilly & Tea değeri hazırdır. Uygulama henüz interpreter’ı çalıştırmadı; sonuç görünümünde tamamlanmış veya kabul edilmiş çıktı yoktur.

    Girdi değeri
    O'Reilly & Tea
    Contract kontrolü
    Profil seçilmedi
    Interpreter
    Yorumlama tamamlanmadı
    Sonuç görünümü
    Sonuç yok
  2. Profil contract seçimi

    Uygulama kendi Python executable’ını ve sabit argument-echo child code’unu seçer. O'Reilly & Tea yalnız tek argv değeridir; shell=False. Bu profil executable veya shell programı seçme yetkisi vermez.

    Girdi değeri
    O'Reilly & Tea
    Contract kontrolü
    Uygulama profili seçildi
    Interpreter
    Yorumlama tamamlanmadı
    Sonuç görünümü
    Sonuç yok
  3. Yorumlama tamamlandı

    Child tamamlandı ve argc=1, title=O'Reilly & Tea JSON sonucunu döndürdü. Apostrophe ve ampersand tek title’da korundu; sonuç görünümü henüz güncellenmedi.

    Girdi değeri
    O'Reilly & Tea
    Contract kontrolü
    Uygulama profili seçildi
    Interpreter
    Yorumlama tamam; count=1
    Sonuç görünümü
    Sonuç yok
  4. Consumer shape kararı

    Uygulama tamamlanan echo çıktısında tek argument ve aynı title’ı görür; command-data sonucu ACCEPT olur. Bu kabul başka aracın option, path veya privilege policy’sini doğrulamaz.

    Girdi değeri
    O'Reilly & Tea
    Contract kontrolü
    Çıktı kabul edildi
    Interpreter
    Yorumlama tamam; count=1
    Sonuç görünümü
    Sonuç yok
  5. Onaylı çıktı hazır

    Consumer için kabul edilmiş çıktı hazırdır: argc=1; title=O'Reilly & Tea. Bu yerel hazırlık sonuç görünümünü henüz değiştirmez; yeni HTTP response veya browser delivery çizilmez.

    Girdi değeri
    O'Reilly & Tea
    Contract kontrolü
    Çıktı kabul edildi
    Interpreter
    argc=1; title=O'Reilly & Tea hazır
    Sonuç görünümü
    Sonuç yok
  6. Sonuç görünümü tamam

    Sonuç görünümü şimdi kabul edilmiş argc=1; title=O'Reilly & Tea çıktısını gösterir. Interpreter completion ile consumer’ın bu çıktıyı kullanması ayrıdır; bu adım browser rendering veya başka business action kanıtı değildir.

    Girdi değeri
    O'Reilly & Tea
    Contract kontrolü
    Çıktı kabul edildi
    Interpreter
    argc=1; title=O'Reilly & Tea hazır
    Sonuç görünümü
    argc=1; title=O'Reilly & Tea

Sabit template

  1. Yorumlama isteği hazır

    Örnekte template profili ve Tea & Bread değeri hazırdır. Uygulama henüz interpreter’ı çalıştırmadı; sonuç görünümünde tamamlanmış veya kabul edilmiş çıktı yoktur.

    Girdi değeri
    Tea & Bread
    Contract kontrolü
    Profil seçilmedi
    Interpreter
    Yorumlama tamamlanmadı
    Sonuç görünümü
    Sonuç yok
  2. Profil contract seçimi

    Uygulama sabit <p>$title</p> string.Template source’unu seçer. Tea & Bread, HTML text context için Tea &amp; Bread olarak temsil edilir; title yeni template source değildir.

    Girdi değeri
    Tea & Bread
    Contract kontrolü
    Uygulama profili seçildi
    Interpreter
    Yorumlama tamamlanmadı
    Sonuç görünümü
    Sonuç yok
  3. Yorumlama tamamlandı

    Sabit template’in substitution işlemi <p>Tea &amp; Bread</p> string’ini üretti. Bu tamamlanmış HTML text serialization’dır; browser parse veya pixel sonucu değildir.

    Girdi değeri
    Tea & Bread
    Contract kontrolü
    Uygulama profili seçildi
    Interpreter
    Yorumlama tamam; count=1
    Sonuç görünümü
    Sonuç yok
  4. Consumer shape kararı

    Gerekli title mapping’i vardır ve template-data çıktısı ACCEPT olur. Sabit source ile encoded value ayrı kalır; bu karar başka output context’leri veya tam template engine güvenliğini doğrulamaz.

    Girdi değeri
    Tea & Bread
    Contract kontrolü
    Çıktı kabul edildi
    Interpreter
    Yorumlama tamam; count=1
    Sonuç görünümü
    Sonuç yok
  5. Onaylı çıktı hazır

    Consumer için kabul edilmiş çıktı hazırdır: <p>Tea &amp; Bread</p>. Bu yerel hazırlık sonuç görünümünü henüz değiştirmez; yeni HTTP response veya browser delivery çizilmez.

    Girdi değeri
    Tea & Bread
    Contract kontrolü
    Çıktı kabul edildi
    Interpreter
    <p>Tea &amp; Bread</p> hazır
    Sonuç görünümü
    Sonuç yok
  6. Sonuç görünümü tamam

    Sonuç görünümü şimdi kabul edilmiş <p>Tea &amp; Bread</p> çıktısını gösterir. Interpreter completion ile consumer’ın bu çıktıyı kullanması ayrıdır; bu adım browser rendering veya başka business action kanıtı değildir.

    Girdi değeri
    Tea & Bread
    Contract kontrolü
    Çıktı kabul edildi
    Interpreter
    <p>Tea &amp; Bread</p> hazır
    Sonuç görünümü
    <p>Tea &amp; Bread</p>

Book XML

  1. Yorumlama isteği hazır

    Örnekte xml profili ve <book><title>Tea</title></book> değeri hazırdır. Uygulama henüz interpreter’ı çalıştırmadı; sonuç görünümünde tamamlanmış veya kabul edilmiş çıktı yoktur.

    Girdi değeri
    <book><title>Tea</title></book>
    Contract kontrolü
    Profil seçilmedi
    Interpreter
    Yorumlama tamamlanmadı
    Sonuç görünümü
    Sonuç yok
  2. Profil contract seçimi

    Uygulama 128 byte, depth=3 ve nodes=16 sınırları olan XML profilini seçer. DTD reddi ve external-entity policy ayrı ayarlardır; book/title domain shape’i parse sonrası denetlenir.

    Girdi değeri
    <book><title>Tea</title></book>
    Contract kontrolü
    Uygulama profili seçildi
    Interpreter
    Yorumlama tamamlanmadı
    Sonuç görünümü
    Sonuç yok
  3. Yorumlama tamamlandı

    XML grammar parse’i tamamlandı: root=book, title=Tea ve executions=1. Parse edilmiş tree henüz kabul edilmiş book record’u değildir; sonuç görünümü değişmedi.

    Girdi değeri
    <book><title>Tea</title></book>
    Contract kontrolü
    Uygulama profili seçildi
    Interpreter
    Yorumlama tamam; count=1
    Sonuç görünümü
    Sonuç yok
  4. Consumer shape kararı

    Root book, tek title child ve attributes/nested-child yokluğu domain contract’ını sağlar. xml-record ACCEPT olur; yalnız title=Tea projection’ı kabul edilir.

    Girdi değeri
    <book><title>Tea</title></book>
    Contract kontrolü
    Çıktı kabul edildi
    Interpreter
    Yorumlama tamam; count=1
    Sonuç görünümü
    Sonuç yok
  5. Onaylı çıktı hazır

    Consumer için kabul edilmiş çıktı hazırdır: title=Tea. Bu yerel hazırlık sonuç görünümünü henüz değiştirmez; yeni HTTP response veya browser delivery çizilmez.

    Girdi değeri
    <book><title>Tea</title></book>
    Contract kontrolü
    Çıktı kabul edildi
    Interpreter
    title=Tea hazır
    Sonuç görünümü
    Sonuç yok
  6. Sonuç görünümü tamam

    Sonuç görünümü şimdi kabul edilmiş title=Tea çıktısını gösterir. Interpreter completion ile consumer’ın bu çıktıyı kullanması ayrıdır; bu adım browser rendering veya başka business action kanıtı değildir.

    Girdi değeri
    <book><title>Tea</title></book>
    Contract kontrolü
    Çıktı kabul edildi
    Interpreter
    title=Tea hazır
    Sonuç görünümü
    title=Tea

Yanlış XML root

  1. Yorumlama isteği hazır

    Örnekte xml profili ve <display><title>Tea</title></display> değeri hazırdır. Uygulama henüz interpreter’ı çalıştırmadı; sonuç görünümünde tamamlanmış veya kabul edilmiş çıktı yoktur.

    Girdi değeri
    <display><title>Tea</title></display>
    Contract kontrolü
    Profil seçilmedi
    Interpreter
    Yorumlama tamamlanmadı
    Sonuç görünümü
    Sonuç yok
  2. Profil contract seçimi

    Uygulama 128 byte, depth=3 ve nodes=16 sınırları olan XML profilini seçer. DTD reddi ve external-entity policy ayrı ayarlardır; book/title domain shape’i parse sonrası denetlenir.

    Girdi değeri
    <display><title>Tea</title></display>
    Contract kontrolü
    Uygulama profili seçildi
    Interpreter
    Yorumlama tamamlanmadı
    Sonuç görünümü
    Sonuç yok
  3. Yorumlama tamamlandı

    XML grammar parse’i tamamlandı: root=display, title=Tea ve executions=1. Parse edilmiş tree henüz kabul edilmiş book record’u değildir; sonuç görünümü değişmedi.

    Girdi değeri
    <display><title>Tea</title></display>
    Contract kontrolü
    Uygulama profili seçildi
    Interpreter
    Yorumlama tamam; count=1
    Sonuç görünümü
    Sonuç yok
  4. Consumer shape kararı

    Root display, book/title contract’ına uymaz. Grammar parse’i tamamlanmış olsa da xml-shape REJECT olur; title=Tea kabul edilmiş book projection’ına dönüştürülmez.

    Girdi değeri
    <display><title>Tea</title></display>
    Contract kontrolü
    Reddedildi: xml-shape
    Interpreter
    Yorumlama tamam; count=1
    Sonuç görünümü
    Sonuç yok
  5. Reddedilen XML çıktısı tutuldu

    XML parse tamamlandı ama display root’u book contract’ına uymadı. Output null tutulur; consumer için onaylı record hazırlanmaz.

    Girdi değeri
    <display><title>Tea</title></display>
    Contract kontrolü
    Reddedildi: xml-shape
    Interpreter
    Yalnız parse edilmiş tree; output null
    Sonuç görünümü
    Sonuç yok
  6. Sonuç görünümü tamam

    Görünüm xml-shape reddini ve output=null sonucunu gösterir. Parse edilmiş display/title tree’si kabul edilmiş Tea book veya boş başarı olarak sunulmaz.

    Girdi değeri
    <display><title>Tea</title></display>
    Contract kontrolü
    Reddedildi: xml-shape
    Interpreter
    Yalnız parse edilmiş tree; output null
    Sonuç görünümü
    Sonuç yok; xml-shape

ROLLER · STATE · VERİ AKIŞI

Interpreter seçimi input’un işi değildir

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

Bu artifact yalnız önceden belirlenmiş dört sıradan örnek kullanır: O'Reilly & Tea child argument’ı, Tea & Bread HTML text’i, book/title XML record’u ve sıradan display/title record’u. Profil eksikse NOT-COMPUTED, tanınmıyorsa REJECT olur. Tür veya uzunluk kontrolünü geçmek interpretation’ın başarıyla tamamlandığı anlamına gelmez. Native sonuç, interpreter’ın gerçek çıktısını ve uygulamanın onu kabul edilmiş record olarak tüketip tüketmediğini ayrı gösterir.

Command argument ile shell programı ayrılır

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

Argument’ları ayrı vermek yine de bütün business policy’nin yerine geçmez. Bazı araçlar argument’ları option, path veya destination olarak yorumlar; bu anlam ayrıca onaylı operation contract’ı ister. Buradaki child option parser kullanmaz ve network/file operation yapmaz. Sabit child environment, timeout=5 ve check=True bu çalıştırma için seçilen profildir; timeout genel OS resource isolation kanıtı değildir. Sonuç macOS’te gözlenmiştir; Python dokümantasyonunun Windows batch-file uyarısı bütün platformları tek davranışa indirgememeyi hatırlatır.

Template source sabit, value ayrı kalır

Bu örnekte Python string.Template için source <p>$title</p> uygulamada sabittir. Tea & Bread title’ı HTML text context için Tea &amp; Bread olarak serialize edilir, sonra title value’su substitute edilir. Tamamlanan string <p>Tea &amp; 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.

Bir value içine sıradan $catalog label’ı gelirse ikinci bir substitution pass yapılmaz. Native check bunu sabit Book: $title template’iyle gözler. Python string.Template, Python 3.14 t-string özelliği veya tam Jinja/Twig engine değildir. Bu basit engine’in sonucu bütün server-side template engine sandbox’larının güvenli olduğunu kanıtlamaz. Template source’un kullanıcı girdisiyle birleştirilmesi, source/data ownership’ini değiştirir; bu derste executable user template veya vulnerability payload çalıştırılmaz.

XML parse ve domain record iki aşamadır

XML ö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.

Sıradan <book><title>Tea</title></book> parse olur. Sonra uygulama root book, tek title child, attributes yok, nested child yok ve title için 1–40 code point contract’ını kontrol eder. <display><title>Tea</title></display> grammar olarak parse olur ama domain shape’e uymaz. Bu nedenle XML execution count=1 iken kabul edilmiş çıktı yoktur; output null kalır. Parse edilmiş tree’yi başarıyla tüketilmiş book gibi göstermek iki boundary’yi birbirine karıştırır.

XML tree, XPath seçimi ve external kaynak farklıdır

Uygulamanı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.

External entity resolution, XML node seçimiyle aynı işlem değildir: resolver bir dış kaynağa erişim sınırı kurabilir. Burada hiçbir external reference veya entity payload verilmez. Sadece zararsız, boş bir DTD declaration seçilmiş callback’te reddedilerek policy’nin devreye girdiği gözlenir. Resolver call count bu sıradan örneklerde 0’dır. Bu gözlem bütün XML library’leri, XSLT transform’ları, document expansion ve general resource exhaustion için conformance veya network isolation kanıtı değildir.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

XML shape

  1. XML consumer contract seçildi

    XML profile book/title ve attributes/nested child bulunmayan shape ister. Input display/title olduğunda well-formed syntax aynı application record’u kurmaz.

    Interpreter source/input
    display/title input
    Interpretation/consumer gate
    Parser sonucu yok
    Output boundary
    Book record yok
  2. Parser bütçeleri ayrı okundu

    byteBudget=128, maxDepth=3 ve maxNodes=16 seçilidir. Küçük ve normal XML input’un bu bütçeler içinde olması domain shape acceptance’ı tamamlamaz.

    Interpreter source/input
    Bounded XML input
    Interpretation/consumer gate
    Budget context known
    Output boundary
    Book record yok
  3. Interpretation sonucu consumer’dan ayrıldı

    expected xml-shape executions=1 taşır; interpretation aşaması çalışmıştır. Root display olduğundan record extraction rule book/title ile eşleşmez.

    Interpreter source/input
    Parsed display root
    Interpretation/consumer gate
    Shape mismatch known
    Output boundary
    No accepted book record
  4. Output projection durduruldu

    decision=REJECT, reason=xml-shape ve output=null kalır. Parse edilmiş title Tea, consumer’da kabul edilmiş Tea book record’u diye gösterilmez.

    Interpreter source/input
    Parsed data exists
    Interpretation/consumer gate
    Consumer rejected shape
    Output boundary
    Output=null
  5. Parser config schema yerine kullanılmadı

    DTD reject ve external entity feature flags ayrı interpreter controls’dür. Bunların seçilmesi yanlış application root’unu kabul ettirmez.

    Interpreter source/input
    Interpreter profile known
    Interpretation/consumer gate
    Domain shape remains required
    Output boundary
    Output=null
  6. Failure owner’ı doğru kaldı

    Bu branch syntax failure değil, consumer shape rejection’dır. Gerçek dış XML, entity expansion veya exploit payload çalıştırıldığı sonucu eklenmez.

    Interpreter source/input
    Known: interpretation ran
    Interpretation/consumer gate
    Known: xml-shape denial
    Output boundary
    No accepted output

Command data

  1. Uygulamanın process source’u seçildi

    Profile executable ve fixed argument echo child’ı uygulama tarafından seçer. O'Reilly & Tea title’ı program source’u değil data argument’ıdır.

    Interpreter source/input
    Fixed echo profile
    Interpretation/consumer gate
    Data argument hazırlanıyor
    Output boundary
    Output yok
  2. Shell ve argument sözleşmesi ayrıldı

    shell=false ve titleArguments=1 verilmiştir. Ampersand veya apostrophe’nin korunması arbitrary command seçme capability’si vermez.

    Interpreter source/input
    Title data only
    Interpretation/consumer gate
    One argument; shell=false
    Output boundary
    Output yok
  3. Tamamlanmış child output okundu

    Expected output argc=1 ve title=O'Reilly & Tea taşır. Child result gelmeden consumer’ın bu sonucu bildiği varsayılmaz; bu scene tamamlanmış observation’ı inceler.

    Interpreter source/input
    Fixed process interpretation
    Interpretation/consumer gate
    Completed argc=1 output
    Output boundary
    Harmless title preserved
  4. Successful echo semantic permission sayılmadı

    Bir argument’ın korunması conversion tool için option, destination veya privilege policy’yi doğrulamaz. shell=false bütün process sandbox’ı demek değildir.

    Interpreter source/input
    One data argument retained
    Interpretation/consumer gate
    Source/data boundary explicit
    Output boundary
    No arbitrary-tool permission
  5. Interpreter rolü diğer sink’lere taşınmadı

    Command argument boundary, template source veya XML path için aynı API değildir. Her interpreter’ın trusted source ve data slot sözleşmesi ayrıca seçilir.

    Interpreter source/input
    Command data role known
    Interpretation/consumer gate
    Other interpreter contracts separate
    Output boundary
    No universal interpretation claim
  6. Native observation scope’u korundu

    Artifact bu fixed echo’nun data sonucunu gösterir; yeni process bu scene tarafından çalıştırılmaz. Arbitrary command, network isolation veya general sandbox garantisi eklenmez.

    Interpreter source/input
    Known: fixed argument observation
    Interpretation/consumer gate
    Known: title preserved
    Output boundary
    Broader process safety unverified

VARSAYIM · SINIR · KONTROL

Review hangi source’u kimin seçtiğini izler

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

Review raporu library adını tek başına sonuç gibi sunmamalı. shell=False command semantic validation’ını otomatik yapmaz; HTML encoding server template source ownership’ini kurmaz; XML feature flag schema validation’ı tamamlamaz. Her biri başka bir boundary’ye aittir. Buradaki kontroller kullanılan runtime’da dar bir profili gözler, herhangi bir target üzerinde command/template/XML exploit denemesi yapmaz.

Başarılı interpreter, başarısız consumer olabilir

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

Eksik profil ile tanınmayan profil de eşitlenmez. Eksik kanıttan policy kararı üretmek, audit’in hangi source’u gördüğünü belirsiz bırakır. İnceleme için profil adı, typed value, tamamlanmış çıktı ve consumer kararı yeterli bir başlangıçtır. Native child code, güvenilen template ve örneğe ait memory XML dışında bir interpreter ya da özel dosya okunmaz; kanıt kapsamı bu sabit örneklerden elde edilen sıradan gözlemlerle sınırlıdır.

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

Hareket olmadan bütün senaryoları oku

Template output

  1. Template source/data observation seçildi

    Template source sabit <p>$title</p> ve library string.Template’tir; t-string değildir. Source seçimi ile title data’sı ayrı kaydedilir.

    Interpretation observation
    Fixed template source
    Profile/result review
    Mapping incelenmedi
    Evidence conclusion
    Render evidence yok
  2. Harmless title mapping okundu

    Input Tea & Bread title değeridir. Application’ın sabit slot’una verilir; input source registry’si veya başka template programı seçmez.

    Interpretation observation
    Tea & Bread data
    Profile/result review
    Fixed $title slot
    Evidence conclusion
    Render evidence yok
  3. HTML text serialization karşılaştırıldı

    Expected output <p>Tea &amp; Bread</p> olarak verilmiştir. executions=1 bu selected transformation’a aittir, browser parsing sonucuna değil.

    Interpretation observation
    Raw title known
    Profile/result review
    HTML text output known
    Evidence conclusion
    Browser parse not observed
  4. Context-specific encoder sınırı korundu

    HTML text output’un doğru olması attribute, URL veya script encoding kurallarını tamamlamaz. Template source ownership ile output encoding de aynı kontrol değildir.

    Interpretation observation
    Fixed text context
    Profile/result review
    Other context rules separate
    Evidence conclusion
    No universal template safety claim
  5. Missing mapping empty success sayılmadı

    Consumer required title alanını ister. Gerekli mapping eksik olduğunda boş kabul edilmiş book veya output üretildiği varsayılmaz; ilgili library error ayrıca gözlenir.

    Interpretation observation
    Required title mapping
    Profile/result review
    Missing-data handling separate
    Evidence conclusion
    No guessed empty success
  6. Transformation kanıtı kapsamlandı

    Bu ledger fixed template ve benign title serialization sonucunu açıklar. Full template engine, server permission veya client pixels için ayrı runtime evidence gerekir.

    Interpretation observation
    Known: fixed source/data roles
    Profile/result review
    Known: encoded public output
    Evidence conclusion
    UNKNOWN: client rendering

Profile eksik

  1. Missing profile observation seçildi

    missing.profile=null kaydı hangi interpreter contract’ının seçildiği hakkında yeterli input olmadığını gösterir. Normal command veya XML branch’i otomatik yerine konmaz.

    Interpretation observation
    Profile=null
    Profile/result review
    Interpreter seçilmedi
    Evidence conclusion
    Output yok
  2. NOT-COMPUTED sonucu okundu

    decision=NOT-COMPUTED olarak verilmiştir. Bu durum known xml-shape rejection veya accepted command-data sonucu değildir.

    Interpretation observation
    Profile=null
    Profile/result review
    Decision NOT-COMPUTED
    Evidence conclusion
    Output yok
  3. Execution counter ayrı okundu

    executions=0 hiç interpreter çalıştırılmadığı branch’i korur. Missing input’dan syntax, child exit veya crypto failure sonucu çıkarılmaz.

    Interpretation observation
    Profile=null
    Profile/result review
    Executions=0
    Evidence conclusion
    No interpreter outcome
  4. Consumer output boş tutuldu

    output=null kalır. Scope bilinmeden title Tea veya normal template body’si consumer’da accepted result gibi gösterilmez.

    Interpretation observation
    Profile=null
    Profile/result review
    No accepted projection
    Evidence conclusion
    Output=null
  5. Source ve profile kanıtı istendi

    Profile adı, typed input ve completed result kendi source’larıyla gerekir. UI’daki seçenek adı bu eksik execution kararını tamamlamaz.

    Interpretation observation
    Missing profile known
    Profile/result review
    Profile/input/result evidence required
    Evidence conclusion
    UNKNOWN: intended interpretation
  6. Eksik profile hükmü genişlemedi

    Bu case’de execution yapılmadığı bilinir; hangi interpreter başarılı veya hatalı olurdu bilinmez. Arbitrary input veya özel dosya okumaya geçilmez.

    Interpretation observation
    Known: no interpreter execution
    Profile/result review
    Known: output withheld
    Evidence conclusion
    UNKNOWN: intended profile outcome

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

Profile ve consumer contract’ını birlikte kapat

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

Template için source registry ve data mapping ayrı tutulur. Output HTML text ise encoding o context’te yapılır; attribute, URL veya script context başka kurallar ister. XML için kullanılan parser config, DTD policy, external resolver policy ve domain shape ayrı kaydedilir. Parser değiştiğinde bu ayarların desteklendiği ve beklenen sonucu ürettiği yeniden kontrol edilmelidir; library adının aynı kalması yeterli değildir.

Sadece kabul edilmiş çıktı tüketilsin

Consumer’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.

Bu ayrım regression check için bağımsız beklenen output gerektirir. Sıradan title child’dan aynı bir argument olarak dönmeli, ampersand sabit HTML text’te doğru serialize edilmeli, book/title record’u seçilmeli, display root’u reddedilmelidir. Zararsız DTD örneği yalnız callback rejection’ını doğrular. Network isolation, arbitrary entity expansion, command sandbox, full template engine veya full XPath conformance ayrıca kanıt ister. UI hareketi kapatıldığında aynı output/decision bilgisi metin halinde kalır.

ŞİMDİ VAKAYA UYGULA

Interpreter success hangi consumer kabulünü tamamlamaz?

Fixed command, template ve XML profile’ları source ile data rollerini ayırır. Shape denial ve missing profile aynı failure değildir.

Vakadaki input, server işleme ve response için karar sırasını çıkar. Parsed veya valid data ile completed operation aynı sonuç değildir; hangi owner’ın hangi koşulu değerlendirdiğini belirt.

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

ÖRNEĞİ BİRLİKTE OKUYALIM

Atlas interpreter ve onaylı çıktı kaydı

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

Ham kaydı ve alan açıklamalarını oku
{
  "profiles": {
    "command": {
      "executable": "own Python runtime",
      "source": "fixed argument echo child",
      "shell": false,
      "titleArguments": 1,
      "timeoutSeconds": 5,
      "childEnvironment": {
        "PYTHONIOENCODING": "utf-8"
      }
    },
    "template": {
      "source": "<p>$title</p>",
      "library": "string.Template; not t-string",
      "encoding": "HTML text"
    },
    "xml": {
      "byteBudget": 128,
      "maxDepth": 3,
      "maxNodes": 16,
      "DTD": "reject startDTD",
      "externalGeneralEntities": false,
      "externalParameterEntities": false,
      "path": "title",
      "shape": "book/title with no attributes/nested child"
    }
  },
  "inputs": {
    "command": {
      "profile": "command",
      "value": "O'Reilly & Tea"
    },
    "template": {
      "profile": "template",
      "value": "Tea & Bread"
    },
    "xml": {
      "profile": "xml",
      "value": "<book><title>Tea</title></book>"
    },
    "xml-shape": {
      "profile": "xml",
      "value": "<display><title>Tea</title></display>"
    }
  },
  "expected": {
    "command": {
      "decision": "ACCEPT",
      "reason": "command-data",
      "executions": 1,
      "output": {
        "argc": 1,
        "title": "O'Reilly & Tea"
      }
    },
    "template": {
      "decision": "ACCEPT",
      "reason": "template-data",
      "executions": 1,
      "output": "<p>Tea &amp; Bread</p>"
    },
    "xml": {
      "decision": "ACCEPT",
      "reason": "xml-record",
      "executions": 1,
      "output": {
        "title": "Tea"
      }
    },
    "xml-shape": {
      "decision": "REJECT",
      "reason": "xml-shape",
      "executions": 1,
      "output": null
    }
  },
  "missing": {
    "profile": null,
    "decision": "NOT-COMPUTED",
    "executions": 0,
    "output": null
  }
}
profiles
Uygulamanın seçtiği source, config ve consumer contract.
executions
Tamamlanan child/substitution/parse işlemi; XML shape reddi parse’den sonra olabilir.
output
Consumer’ın kabul ettiği çıktı; shape reddedilirse null.
missing
Eksik profile hakkında yorumlama sonucu uydurulmaz.

Örneğin sabit Python child işlemi, string.Template/HTML text ve sınırlandırılmış sıradan SAX/limited ElementPath işlemleri. Shell, çalıştırılabilir client template, XXE payload, dış kaynak, full XPath/engine sandbox, browser veya authorization çalıştırılmaz.

İki yanlış kanı

shell=False bütün argument semantiğini doğrular.

Shell sınırı ile aracın option/path/destination policy’si farklıdır.

XML parse veya HTML escape, her interpretation boundary’yi kapatır.

Source sahipliği, parser policy’si, schema ve output context ayrı kararlar ister.

SIRA SENDE

Bu hikâyeyi sen çöz.

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

XML parse çalışıyor, fakat root display; sözleşme book/title istiyor. Output record kabul edilir mi?

  1. Evet. Title text’i bulunduysa bütün XML root’ları eşdeğerdir.
  2. Hayır. xml-shape REJECT; output=null.
Gerekçeli cevabı oku

Hayır. xml-shape REJECT; output=null. — executions=1 parser’ın çalışmasını gösterir. Bu, root/child sözleşmesinin kabul edildiği anlamına gelmez.

O’Reilly & Tea başlığı bu command örneğinde neden tek data argümanı olarak kalıyor?

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

profiles.command.shell
false
profiles.command.titleArguments
1
inputs.command.value
O'Reilly & Tea
expected.command.output
{"argc":1,"title":"O'Reilly & Tea"}
  1. shell=false ve output argc=1.
  2. Ampersand bulunduğu için her zaman ikinci command çalışır.
Gerekçeli cevabı oku

shell=false ve output argc=1. — Başlık ayrı argv değeri olarak sabit echo child’a verilir. Bu sözleşme onu shell source veya executable seçimi olarak kullanmaz.

Template source sabit <p>$title</p>; output <p>Tea &amp; Bread</p>. Template, command ve XML için neden tek bir escaping çözümü yeterli değildir?

Gerekçeli cevabı oku

Template bu örnekte sabit string.Template source’una HTML text olarak encoded data yerleştirir; data yeni template source değildir. Command ayrı argv ve shell=false kullanır. XML kendi byte/depth/node, DTD ve entity policy’siyle parse edilir. Bir context’in encoding’i diğer interpreter’ın bütün güven koşullarını sağlamaz. Bu sonlu örnekler keyfi template, command veya XML runtime’ı sunmaz.

□ Data ile interpreter source’unu ayırdım.

□ Her context’in ayrı grammar ve policy koşullarını belirttim.

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

Kaynaklar ve kapsam