Moduler för XML-bearbetning¶
Källkod: Lib/xml/
Pythons gränssnitt för bearbetning av XML är grupperade i paketet xml
.
Anteckning
Om du behöver analysera otillförlitliga eller oautentiserade data, se XML-säkerhet.
Det är viktigt att notera att moduler i paketet xml
kräver att det finns minst en SAX-kompatibel XML-parser tillgänglig. Expat-parsern ingår i Python, så modulen xml.parsers.expat
kommer alltid att vara tillgänglig.
Dokumentationen för paketen xml.dom
och xml.sax
är definitionen av Python-bindningarna för DOM- och SAX-gränssnitten.
Undermodulerna för XML-hantering är:
xml.etree.ElementTree
: ElementTree API, en enkel och lättviktig XML-processor
xml.dom
: DOM API-definitionenxml.dom.minidom
: en minimal DOM-implementeringxml.dom.pulldom
: stöd för att bygga partiella DOM-träd
xml.sax
: SAX2-basklasser och bekvämlighetsfunktionerxml.parsers.expat
: bindningen för Expat-parsern
XML-säkerhet¶
En angripare kan utnyttja XML-funktioner för att utföra överbelastningsattacker, komma åt lokala filer, skapa nätverksanslutningar till andra maskiner eller kringgå brandväggar.
Expat-versioner lägre än 2.6.0 kan vara sårbara för ”billion laughs”, ”quadratic blowup” och ”large tokens”. Python kan vara sårbart om det använder sådana äldre versioner av Expat som ett systemtillhandahållet bibliotek. Kontrollera pyexpat.EXPAT_VERSION
.
xmlrpc
är sårbar för attacken ”decompression bomb”.
- miljarder skratt / exponentiell enhetsexpansion
Attacken Billion Laughs - även känd som exponentiell entitetsexpansion - använder flera nivåer av nästlade entiteter. Varje entitet hänvisar till en annan entitet flera gånger, och den slutliga entitetsdefinitionen innehåller en liten sträng. Den exponentiella expansionen resulterar i flera gigabyte text och förbrukar mycket minne och CPU-tid.
- kvadratisk uppblåsning enhetsexpansion
En kvadratisk blowup-attack liknar en Billion Laughs-attack; den missbrukar också entitetsexpansion. Istället för nästlade entiteter upprepas en stor entitet med ett par tusen tecken om och om igen. Attacken är inte lika effektiv som det exponentiella fallet men den undviker att utlösa parser-motåtgärder som förbjuder djupt nästlade enheter.
- dekompressionsbomb
Dekompressionsbomber (även kallade ZIP bomb) gäller alla XML-bibliotek som kan analysera komprimerade XML-strömmar, t.ex. gzippade HTTP-strömmar eller LZMA-komprimerade filer. För en angripare kan det minska mängden överförd data med tre magnituder eller mer.
- stora tokens
Expat behöver omanalysera oavslutade tokens; utan det skydd som introducerades i Expat 2.6.0 kan detta leda till kvadratisk körtid som kan användas för att orsaka övergrepp i applikationen som analyserar XML. Problemet är känt som CVE 2023-52425.