---
title: "ADR-0004: Enforce als Standard, Observe nur als sichtbarer Migrationsmodus"
manual: "HTTP Guard"
version: "0.1.4"
permalink: "https://docs.typo3.org/permalink/netresearch/nr-http-guard:adr-0004@0.1.4"
source: "Adr/ADR-0004-FailClosedAndModes.rst"
rendered: "2026-10-18T14:31:43+00:00"
---

# ADR-0004: Enforce als Standard, Observe nur als sichtbarer Migrationsmodus {#adr-0004}

-   *Status:* Historischer Vorschlag (Original: Vorgeschlagen)
-   *Datum:* 2026-10-08
-   *Entscheidungsträger im Original:* Projektverantwortliche Architektur/Security; Freigabe noch ausstehend
-   *Anforderungen:* HG-003, HG-004, HG-021, HG-033, HG-034, HG-043
-   *Ablösung im Original:* keine; neue Entscheidung für das vorgeschlagene Produkt
-   *Originalquelle:* [Unveränderter ADR-0004](https://github.com/netresearch/typo3_http_guard/blob/3f929ae8794ca04ab3dd25627e94d601a2db23e0/specification/adr/ADR-0004-fail-closed-und-betriebsmodi.md)

> [!NOTE]
> Dieser ADR gibt den vollständigen Vorschlag vom 2026-10-08 wieder. Status,
> ausstehende Freigaben und geplante Tests beschreiben diesen Originalstand.
> Die aktuelle Alpha-Arbeit ist vom Nutzer freigegeben. Den heutigen
> Paketaufbau beschreibt [ADR-0015: Eine installierbare Extension](https://docs.typo3.org/permalink/netresearch/nr-http-guard:adr-0015@0.1.4); für das aktuelle
> Sicherheitsverhalten und die ausgeführten Nachweise gelten [Schutzmodell und Grenzen](https://docs.typo3.org/permalink/netresearch/nr-http-guard:security@0.1.4)
> und [Dokumentierte Prüfstände](https://docs.typo3.org/permalink/netresearch/nr-http-guard:verification-report@0.1.4).

## Kontext {#adr-0004-context}

Eine neu installierte Securityextension erzeugt eine Schutzannahme. Ein stiller
Fallback ohne cURL oder bei ungültiger Policy würde diese Annahme verletzen.
Gleichzeitig braucht ein Bestandsprojekt eine kontrollierte Inventarisierung
seiner internen Verbindungen. Vault bietet heute absichtlich ein schwächeres
Verhalten ohne cURL. \[S04-S06, S16\]

## Entscheidung {#adr-0004-decision}

Neue Installation: `enforce`, keine internen Grants. Fehlende optionale
Konfiguration verwendet sichere Defaults; ungültige vorhandene Konfiguration
scheitert. Nicht unterstützte Transportbedingungen blockieren vor Kontakt zum
Ziel oder Proxy.

`observe` ist eine explizite Betreiberentscheidung. Er protokolliert
soweit prüfbar `would_deny` bzw. `unverifiable`, delegiert aber an den
bisherigen Transport und darf nicht als geschützt gelten. Ein Diagnoseproblem
soll dort nicht als erfolgreiche Sicherheitsprüfung erscheinen. Vorhandene
Core-/Vaultkontrollen bleiben unangetastet.

`disabled` ist transparent und sichtbar. Es gibt keinen automatischen
Wechsel von Enforce zu Observe oder Disabled. Rollback und Ausnahmen benötigen
Änderung an vertrauenswürdiger Projektkonfiguration. Kein Schalter aus einem
HTTP-Parameter oder entfernten Responseheader.

## Verworfene Alternativen {#adr-0004-rejected-alternatives}

**Observe als Installationsdefault:** liefert zunächst keinen erwarteten Schutz.
**Warnung statt Block bei Transportlücken:** schwer erkennbarer Verlust der
Invariante. **Fail-open bei Konfigurationsfehlern:** ein Tippfehler würde
Berechtigungen erweitern.

## Konsequenzen {#adr-0004-consequences}

Fehler sind eindeutig; Bestandsinstallationen können aber nach Aktivierung
ausfallen, bis legitime interne Zugriffe erfasst sind. Der Rollout braucht
Inventar, Diagnose und bewusste Freigabe. Observe-Telemetrie ist keine Abnahme
des Enforce-Transports.

## Nachweis und Abnahme {#adr-0004-verification-and-acceptance}

T005, T006, T042, T065, T066, T067. Details und erwartete Ergebnisse stehen in
[06 Tests und Abnahme](https://github.com/netresearch/typo3_http_guard/blob/3f929ae8794ca04ab3dd25627e94d601a2db23e0/specification/specs/06-verification.md). Diese Tests sind spezifiziert, nicht im Rahmen dieser
Dokumentlieferung ausgeführt.

## Anlass für Neubewertung {#adr-0004-reassessment-trigger}

Eine Änderung des Installationsdefaults ist eine produktweite
Security-/Kompatibilitätsentscheidung. Automatische Herabstufung bleibt
unabhängig davon unzulässig.

## Zugehörige Dokumente {#adr-0004-related-documents}

[Produktanforderungen](https://github.com/netresearch/typo3_http_guard/blob/3f929ae8794ca04ab3dd25627e94d601a2db23e0/specification/specs/01-product-requirements.md), [Sicherheitsmodell](https://github.com/netresearch/typo3_http_guard/blob/3f929ae8794ca04ab3dd25627e94d601a2db23e0/specification/specs/02-security-model.md), [Architektur](https://github.com/netresearch/typo3_http_guard/blob/3f929ae8794ca04ab3dd25627e94d601a2db23e0/specification/specs/03-architecture.md), [Quellen S01-S23](https://github.com/netresearch/typo3_http_guard/blob/3f929ae8794ca04ab3dd25627e94d601a2db23e0/specification/specs/08-evidence-and-sources.md),
[ADR-Index](https://docs.typo3.org/permalink/netresearch/nr-http-guard:adr-index@0.1.4).
