XML-konfiguraatio (.xml)

W3C Standardi

Extensible Markup Language (XML) on monipuolinen merkintäkieli, joka määrittelee säännöt sellaisten asiakirjojen koodaamiseen, jotka ovat sekä ihmisen luettavissa että koneellisesti käsiteltävissä.

Pakkaa XML verkossa

Yksityisesti - tiedostot eivät koskaan poistu laitteeltasi

Tarkastele tiedostoa ja sen metatietoja

Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat XML-tiedostot tarkistamalla tiedoston alun binäärisarjan:

Valitse tai pudota tiedostot tähän

Yksityisesti - tiedostot eivät koskaan poistu laitteeltasi

tai liitä Ctrl+V
Tietosuojatakuu: 0 % verkkosiirtoa Ulkoisille palvelimille ei ole ladattu yhtään tavua. Kaikki käsittely tapahtui paikallisesti selaimen hiekkalaatikossa.

Otsaketunniste tavutasolla (tunnistetavut)

Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat XML-tiedostot tarkistamalla tiedoston alun binäärisarjan:

HEKSADEKSIMAALINEN TUNNISTE (SIJAINTI 0):

3C 3F 78 6D

ASCII-ESITYSTAPA: <?xm

Standardointi: W3C Recommendation (XML 1.0 Fifth Edition)

Tekniset tiedot

SäiliöarkkitehtuuriHierarkkinen tekstimerkintäkieli mukautetuilla semanttisilla tunnisteilla ja attribuuteilla
PakkausGzip / Deflate pienentää runsaasti toistuvia lopetustunnisteita sisältävän tekstin kokoa 85%-92%
Tavujärjestys (Endianness)UTF-8- tai UTF-16-merkkivirta, joka määräytyy XML-määrityksen koodausattribuutin mukaan
VäriavaruudetEi sovellettavissa
Kanavat ja rakenneElementit (<tag>), attribuutit (attr="val"), CDATA-lohkot, käsittelyohjeet
Suurimmat mitatRajoittamaton hierarkkinen puurakenne
LäpinäkyvyysEi sovellettavissa
Suoratoisto ja progressiivinen latausSAX- (Simple API for XML) ja StAX-jäsentimet mahdollistavat muistitehokkaan virran lukemisen

Tekninen vertailumatriisi: XML vs. kilpailijat

Tekninen attribuuttiXML (Nykyinen)JSONYAMLProtocol Buffers
RunsassanaisuusKorkea (lopetustunnisteet ja attribuuttisyntaksi)Vähäinen (kompakti avain-arvo-muoto)Vähäinen (sisennyspohjainen)Erittäin vähäinen (binäärisarjallistaminen)
SkeematarkistusKypsemmät XSD- ja DTD-standardit kääntäjävalvonnallaJSON Schema (valinnainen)JSON Schema / YAML-skeematTiukat .proto-skeemamääritykset
NimiavaruudetNatiivi XML-nimiavaruuksien (xmlns) tukiEi natiivia nimiavaruusmekanismiaEi natiivia nimiavaruusmekanismiaPakettimääritykset
MuunnoksetXSLT-deklaratiiviset muunnosputketMukautettu koodi / jq-skriptitMukautettu koodiMukautettu koodi

Yleiset vioittumistavat ja heksadesimaalinen palautusopas

XML-jäsennysvirhe: virheellinen tunniste tai määrittelemätön entiteetti.

Perussyy: Escapoimattomat varatut merkit (kuten '&', '<' tai '>') tai kirjainkoon ero aloitus- ja lopetustunnisteiden välillä.

Korjaus: Korvaa '&' merkillä '&amp;', '<' merkillä '&lt;', '>' merkillä '&gt;' tai kääri mielivaltainen teksti '<![CDATA[ ... ]]>'-lohkojen sisään.

Tietoturva-analyysi ja tiedostojäsentimien hyökkäysvektorit

XML-jäsentimet ovat historiallisesti olleet yritysten tietojenkäsittelyn eniten hyökkäysten kohteena olevia komponentteja DTD:n ja entiteettien tehokkaiden laajennusominaisuuksien vuoksi.

Tunnetut hyökkäysvektorit

  • XML:n ulkoinen entiteetti (XXE): Haitallinen DOCTYPE, joka viittaa paikallisiin palvelintiedostoihin ('file:///etc/passwd') tai sisäisen verkon päätepisteisiin.
  • Billion Laughs -hyökkäys (XML-pommi): Sisäkkäiset entiteettimääritykset, jotka laajenevat muistissa eksponentiaalisesti ja aiheuttavat palvelunestotilan.
  • XPath-injektio: Puhdistamattomat käyttäjän syötteet, jotka mahdollistavat luvattomat kyselyt XML-tietokantoihin.

Tietoturvan parhaat käytännöt: Poista aina käytöstä ulkoinen DTD-resoluutio ja ulkoisten entiteettien käsittely (aseta ominaisuus 'disallow-doctype-decl' arvoon true) XML-jäsentimissä.

Historia ja virstanpylväät

2008W3C julkaisee XML 1.0:n viidennen painoksen (Fifth Edition), joka standardoi modernin kansainvälisten merkkien tuen.
2000W3C julkaisee XML Schema 1.0:n (XSD) ja DOM Level 2:n, jotka muodostavat perustan rakenteelliselle tyypitykselle ja tapahtuma-arkkitehtuureille.
1998W3C julkaisee XML 1.0 -suosituksen yksinkertaistettuna, verkkoystävällisenä SGML:n osajoukkona.

Tärkeimmät edut

  • Tarkka skeematarkistus XSD:n (XML Schema Definition) tai DTD:n avulla varmistaa tiukan tietojen eheyden.
  • Nimiavaruudet (xmlns) estävät elementtien nimien törmäykset monimutkaisissa useista lähteistä kootuissa asiakirjoissa.
  • Tehokkaat kysely- ja muunnostyökaluketjut (XPath, XSLT, XQuery).

Tekniset rajoitukset

  • Äärimmäisen runsassanainen: lopetustunnisteet toistavat elementtien nimiä, mikä aiheuttaa suuria tiedostokokoja ja suurta kaistanleveyden kulutusta.
  • DOM-jäsennys muodostaa suuria, runsaasti muistia kuluttavia oliopuita.
  • Altis ulkoisten XML-entiteettien (XXE) ja entiteettien laajenemisen tietoturva-aukoille.

Mielenkiintoisia teknisiä faktoja

  • XML on SGML:n (Standard Generalized Markup Language) yksinkertaistettu osajoukko, joka on suunniteltu toimimaan saumattomasti World Wide Webissä.
  • Modernit toimistoasiakirjat (.docx, .xlsx), vektorigrafiikat (.svg) ja RSS-syötteet ovat kaikki erikoistuneita XML-murteita.
  • Klassinen 'Billion Laughs' -palvelunestohyökkäys käyttää vain 1 kilotavua sisäkkäisiä XML-entiteettejä (lol1 viittaa kymmeneen lol0-entiteettiin, aina lol9:ään asti), jotka laajenevat jäsennyksen yhteydessä eksponentiaalisesti 3 gigatavuun muistissa.

Usein kysytyt tekniset kysymykset

Mitä eroa on hyvin muotoillulla ja validilla XML:llä?

'Hyvin muotoiltu' (well-formed) XML noudattaa perussyntaksisääntöjä (vastaavat tunnisteet, lainausmerkit attribuuttien ympärillä, yksi juurielementti). Kelvollinen XML on sekä hyvin muotoiltua että noudattaa tiukasti ulkoista skeemamääritystä (XSD tai DTD).

Miksi JSON korvasi XML:n useimmissa web-rajapinnoissa?

JSON vastaa suoraan JavaScriptin ja muiden ohjelmointikielten tietorakenteita (hajautustaulukoita ja taulukoita) huomattavasti vähäisemmällä mallikoodilla, nopeammalla jäsennyksellä ja pienemmillä verkkokuormilla.

Mikä on XML:n ulkoinen entiteetti (XXE) -haavoittuvuus?

XXE-haavoittuvuus ilmenee, kun XML-jäsennin käsittelee epäluotettavaa asiakirjaa, jossa ulkoinen asiakirjatyyppimääritys (DTD) on käytössä. Hyökkääjät voivat määrittää entiteettejä, jotka osoittavat paikallisiin palvelintiedostoihin (kuten järjestelmäasetuksiin) tai sisäisiin verkon URL-osoitteisiin, jolloin palvelin lukee ja paljastaa luottamuksellista tietoa.