Ein Berichtspostfach ist eine Eingabegrenze und keine vertrauenswürdige Datenquelle. Ein Anhang kann fehlerhaft, übergroß oder absichtlich teuer in der Verarbeitung sein. Erstellen Sie den Aufnahmepfad so, dass die Akzeptanz des Transports nicht automatisch die Akzeptanz des Parsers bedeutet und die Akzeptanz des Parsers nicht automatisch bedeutet, dass die Behauptungen des Berichts vertrauenswürdig sind.
RFC 9990 beschreibt die aggregierte XML-Bereitstellung und warnt vor Ressourcenerschöpfung und falschen Informationen. Bei der folgenden Pipeline handelt es sich um eine Implementierungsempfehlung und nicht um eine Behauptung, dass ein bestimmtes Produkt diese Steuerelemente bereits bereitstellt.
Isolieren Sie die Aufnahme von der Analyse
Referenzen: RFC 9990 §8.1, RFC 9990 §8.2.
Weisen Sie eine Ankunftskennung zu und bewahren Sie einen begrenzten, zugriffskontrollierten Verweis auf den ursprünglichen Anhang. Notieren Sie Größe, Fingerabdruck, Ankunftszeit und Transportmetadaten. Wenden Sie Warteschlangen- und Ressourcenkontrollen pro Ursprung an, damit ein Stream die Arbeitskräfte nicht monopolisieren kann. Behandeln Sie eine Absenderadresse oder einen bekannten Dateinamen als unzureichenden Beweis für die Authentizität.
Sorgen Sie dafür, dass der Worker nur über minimale Berechtigungen verfügt und dass er von den Datenbankanmeldeinformationen getrennt ist, die zum Veröffentlichen endgültiger Metriken verwendet werden. Verhindern Sie, dass der Inhalt von Anhängen ausführbare Befehle oder Zielpfade bestimmt. Fehlgeschlagene Eingaben gehören in einen kontrollierten Diagnosepfad, nicht in öffentliche Fehlerseiten oder uneingeschränkte Protokolle.
Gebundene Dekomprimierung während der Ausführung
Referenzen: RFC 9990 §3.5.2, RFC 9990 §8.1.
RFC 9990 spezifiziert XML und empfiehlt die GZIP-Komprimierung. Erkennen Sie das unterstützte Format und lehnen Sie nicht unterstützte Container gemäß einer dokumentierten Kompatibilitätsrichtlinie ab. Wenn ältere Archivformate bewusst unterstützt werden, prüfen Sie deren zusätzliche Extraktions- und Pfadrisiken, anstatt sie als gleichwertig mit einem einzelnen XML-Stream zu behandeln.
Legen Sie Grenzwerte für komprimierte Bytes, erweiterte Bytes, verstrichene Verarbeitungszeit, Speicher, Datensatzanzahl und Parallelität fest. Erzwingen Sie die Begrenzung der erweiterten Größe beim Lesen, nicht nach der Zuweisung der gesamten Ausgabe. Größenangaben innerhalb eines Containers sind kein Ersatz für die Messung der tatsächlichen Leistung. Stoppen Sie die Verarbeitung, wenn ein konfigurierter Grenzwert erreicht ist.
Analysieren Sie ohne unnötige Funktionen
Referenzen: RFC 9990 §3.1.1, RFC 9990 §8.1.
Referenz: Verhinderung externer OWASP-XML-Entitäten, allgemeine Anleitung.
Verwenden Sie einen gepflegten Parser mit überprüfter tatsächlicher Laufzeitkonfiguration. Deaktivieren Sie nicht benötigte Dokumenttypen, die Auflösung externer Entitäten, XInclude und den Abruf externer Ressourcen. Behandeln Sie nicht unterstützte Härtungseinstellungen als Konfigurationsfehler und nicht als zu ignorierende Warnungen. Verwenden Sie vertrauenswürdige lokale Schemata, wenn eine Validierung erforderlich ist, anstatt den Schemaspeicherorten zu folgen, die durch einen Anhang bereitgestellt werden. Legen Sie Beschränkungen für die Verschachtelung und Textgröße sowie die Gesamtbytes fest.
Validieren Sie die erwartete Berichtsstruktur und Feldsemantik getrennt von der XML-Wohlgeformtheit. Ein Dokument kann wohlgeformt, aber als unbrauchbar sein DMARC Bericht. Behalten Sie den Grund für die Ablehnung bei, ohne einen Parserfehler in ein Urteil über die E-Mail-Authentifizierung umzuwandeln.
Verwenden Sie eine kleine begrenzte Vorrichtung
Veranschaulichende Staging-Konfiguration: Erlauben Sie 64 KiB komprimierter Eingabe und 256 KiB erweiterter Ausgabe für einen bewusst kleinen Testarbeiter. Ein harmloses GZIP-Fixture erweitert sich auf 300 KiB an sich wiederholendem Testtext. Das erwartete Ergebnis ist ein Stopp der erweiterten Größe vor der vollständigen Materialisierung, keine festgeschriebenen Berichtszeilen und eine Diagnose mit dem Grenzwert und der Eingabereferenz.
Bei diesen Zahlen handelt es sich um Demonstrationsgrenzen und nicht um Empfehlungen zur Produktionsgröße. Testen Sie unmittelbar danach einen gültigen kleinen Bericht, um sicherzustellen, dass der Arbeiter weiterhin verwendbar ist. Notieren Sie die tatsächlichen Messungen, bevor Sie die Kontrollarbeiten in Anspruch nehmen. In diesem Artikel wird das erforderliche Stagingverhalten beschrieben, kein ausgeführter Mandantentest. Das Testpaket zeichnet auch eine neue begrenzte Python-GZIP-Demonstration auf: Es erkennt eine Erweiterung über die 256-KiB-Grenze hinaus mit höchstens einem zusätzlichen Erkennungsbyte und verarbeitet dann erfolgreich einen kleinen gültigen XML-Textstrom. Das demonstriert nur diesen lokalen Dekomprimierungsschutz, nicht Parser-Härtung, Speicherisolation oder Datenbankverhalten.
Übertragen Sie nur validierte Daten
Referenzen: RFC 9990 §3.5.4, RFC 9990 §9.2.
Stellen Sie normalisierte Datensätze bereit und schließen Sie den Import nach der Validierung und Duplikatbehandlung atomar ab. Eine unterbrochene Datei sollte keine Teilzählung in der Produktionsanalyse hinterlassen. Machen Sie die Wiederholung idempotent und behalten Sie die Entscheidung bei, die wiederholte Ankünfte mit dem gezählten Bericht verknüpft.
Überwachen Sie abgelehnte Bytes, Verarbeitungszeit, Warteschlangenalter und Wiederherstellungsergebnisse. Seriöse Berichte können lokale Grenzwerte überschreiten. Stellen Sie daher einen kontrollierten Überprüfungspfad bereit, anstatt automatisch jeden Grenzwert zu erhöhen. Schließen Sie den Betriebsentwurf mit benannten Eigentümern für Aufnahme, Parserwartung, Speicheraufbewahrung und Reaktion auf Vorfälle ab.