Postel’s Law
Details
- Vollständiger Name
-
Postel’s Law / Robustness Principle (Robustheitsprinzip)
- Auch bekannt als
-
„Be conservative in what you send, be liberal in what you accept"
Kernkonzepte:
- Das Prinzip
-
Strikt konformen Output senden; Input tolerant annehmen und alles Vertretbare verarbeiten — um die Interoperabilität unabhängig gebauter Systeme zu maximieren
- Konservativer Output
-
Nur wohlgeformte, spezifikationskonforme Nachrichten senden, damit Gegenstellen nie deine Nachlässigkeit ausgleichen müssen
- Liberaler Input
-
Kleine Abweichungen und unbekannt-aber-ignorierbare Felder tolerieren statt sonst nutzbare Nachrichten abzulehnen — stützt Vorwärts-/Rückwärtskompatibilität
- Wo es glänzt
-
Langlebige Netzprotokolle, öffentliche APIs, Dateiformate und Event-Schemas, die sich weiterentwickeln müssen, während alte und neue Teilnehmer koexistieren
- Die moderne Kritik
-
Übermäßige Toleranz häuft undefiniertes Verhalten und Sicherheitsrisiken an (mehrdeutiges Parsing, Smuggling); aktuelle Empfehlung bevorzugt Striktheit plus explizite Versionierung. Mit dokumentierter Toleranzgrenze anwenden, nicht pauschal nachsichtig
- Key Proponents
-
Jon Postel (RFC 760/761, 1980, im Kontext von TCP/IP)
Verwendung:
-
Entwurf von Protokoll-, API- oder Event-Schema-Contracts, die sich entwickeln müssen
-
Entscheidung, wie strikt ein Parser/Validator Input ablehnen soll
-
Nachdenken über Vorwärts-/Rückwärtskompatibilität und Graceful Degradation
Nicht verwenden:
-
Sicherheitskritisches Parsing, wo Mehrdeutigkeit gefährlich ist — lieber strikte Validierung
-
Interne Schnittstellen unter Kontrolle eines Teams, wo Striktheit Bugs früher fängt
Verwandte Anker:
-
Semantic Versioning — die Explizit-Versionierung als Ergänzung zu toleranten Inputs
-
SOLID Principles — Schnittstellendesign und Contract-Stabilität
-
Event-Driven Architecture — tolerante Reader für sich entwickelnde Event-Schemas
Kritik:
-
Eric Allman, "The Robustness Principle Reconsidered" (ACM Queue, 2011) — Jahrzehnte liberaler Annahme züchteten De-facto-Protokoll-Forks und Sicherheitslücken; Toleranz, die als Übergang gedacht war, wurde permanent
-
RFC 9413, "Maintaining Robust Protocols" (Thomson & Schinazi, IETF, 2023) — offizielle IETF-Leitlinie, dass pauschale Nachsicht Protokoll-Ökosystemen langfristig schadet; mehrdeutige Toleranz ermöglicht Interoperabilitätsfehler und Angriffe wie Request Smuggling
-
Im Diskurs benannte Alternative: aktive Protokollpflege mit striktem Parsing und expliziter Versionierung ("fail fast") statt stillschweigender Annahme fehlerhaften Inputs — siehe Semantic Versioning