En rapporteringspostboks er en inngangsgrense, ikke en klarert datakilde. Et vedlegg kan være misformet, overdimensjonert eller bevisst dyrt å behandle. Bygg innføringsbanen slik at transportgodkjenning ikke automatisk betyr parsersaksept, og parsersaksept betyr ikke automatisk at rapportens påstander er pålitelige.
RFC 9990 beskriver samlet XML-levering og advarer om ressursbruk og falsk informasjon. Rørledningen nedenfor er en implementeringsanbefaling, ikke en påstand om at et bestemt produkt allerede har disse kontrollene.
Isoler inntak fra analyse
Referanser: RFC 9990 §8.1, RFC 9990 §8.2.
Tildel en ankomstidentifikator og bevar en avgrenset, tilgangskontrollert referanse til det originale vedlegget. Registrer størrelse, fingeravtrykk, ankomsttid og transportmetadata. Bruk kø- og ressurskontroller per opprinnelse slik at én strøm ikke kan monopolisere arbeidere. Behandle en avsenderadresse eller et kjent filnavn som utilstrekkelig bevis på autentisitet.
Hold arbeideren minimalt privilegert og atskilt fra databaselegitimasjonen som brukes til å publisere endelige beregninger. Hindre vedleggsinnhold fra å bestemme kjørbare kommandoer eller destinasjonsstier. Mislykkede inndata hører hjemme i en kontrollert diagnostisk bane, ikke i offentlige feilsider eller ubegrensede logger.
Bundet dekompresjon mens den kjører
Referanser: RFC 9990 §3.5.2, RFC 9990 §8.1.
RFC 9990 spesifiserer XML og anbefaler GZIP-komprimering. Oppdag det støttede formatet og avvis ikke-støttede beholdere i henhold til en dokumentert kompatibilitetspolicy. Hvis eldre arkivformater med vilje støttes, må du gjennomgå ekstra utvinnings- og banerisiko i stedet for å behandle dem som likeverdige med en enkelt XML-strøm.
Sett grenser for komprimerte byte, utvidede byte, forløpt behandlingstid, minne, antall rekorder og samtidighet. Håndhev utvidede størrelsesgrenser mens du leser, ikke etter å ha allokert hele utdataene. Størrelsesdeklarasjoner inne i en beholder er ikke en erstatning for måling av faktisk produksjon. Stopp behandlingen når en konfigurert grense er nådd.
Parse uten unødvendige muligheter
Referanser: RFC 9990 §3.1.1, RFC 9990 §8.1.
Referanse: OWASP XML forebygging av eksterne enheter, generell veiledning.
Bruk en vedlikeholdt parser med den faktiske kjøretidskonfigurasjonen gjennomgått. Deaktiver unødvendige dokumenttyper, ekstern enhetsoppløsning, XInclude og ekstern ressursinnhenting. Behandle ikke-støttede herdingsinnstillinger som konfigurasjonsfeil, ikke advarsler om å ignorere. Bruk pålitelige lokale skjemaer der validering er nødvendig i stedet for å følge skjemaplasseringer levert av et vedlegg. Bruk grenser for nesting og tekststørrelse samt totale byte.
Valider den forventede rapportstrukturen og feltsemantikken separat fra XML-formen. Et dokument kan være godt utformet, men ubrukelig som en DMARC rapportere. Bevar årsaken til avvisningen uten å oversette en parserfeil til en dom for e-postautentisering.
Bruk en liten avgrenset armatur
Illustrerende oppsettingskonfigurasjon: tillat 64 KiB komprimert inngang og 256 KiB utvidet utgang for en bevisst liten testarbeider. En harmløs GZIP-armatur utvides til 300 KiB med repeterende testtekst. Det forventede resultatet er et stopp i utvidet størrelse før fullstendig materialisering, ingen rapportrader er forpliktet og en diagnostikk som inneholder grensen og inngangsreferansen.
Disse tallene er demonstrasjonsgrenser, ikke råd om produksjonsstørrelse. Test en gyldig liten rapport umiddelbart etterpå for å bekrefte at arbeideren forblir brukbar. Registrer faktiske målinger før du hevder at kontrollen fungerer. Denne artikkelen beskriver nødvendig iscenesettelsesatferd, ikke en utført leietakertest. Gjennomgangspakken registrerer også en ny avgrenset Python GZIP-demonstrasjon: den oppdager utvidelse utover 256 KiB-grensen med maksimalt én ekstra deteksjonsbyte, og håndterer deretter en liten gyldig XML-tekststrøm. Det demonstrerer bare denne lokale dekompresjonsvakten, ikke parserherding, minneisolasjon eller databaseatferd.
Forplikte kun validerte data
Referanser: RFC 9990 §3.5.4, RFC 9990 §9.2.
Trinn normaliserte poster og fullfør importen atomisk etter validering og duplikathåndtering. En avbrutt fil bør ikke etterlate en delvis telling i produksjonsanalyse. Gjør replay idempotent og behold avgjørelsen som knytter gjentatte ankomster til den tellede rapporten.
Overvåk avviste byte, behandlingstid, køalder og gjenopprettingsresultater. Legitime rapporter kan overskride lokale grenser, så gi en kontrollert gjennomgangsbane i stedet for å automatisk øke hver grense. Lukk driftsdesignet med navngitte eiere for inntak, parservedlikehold, lagringsoppbevaring og hendelsesrespons.