Zum Inhalt springen

libxml_disable_entity_loader()

Die libxml_disable_entity_loader()-Funktion in PHP diente dazu, das Laden externer Entitäten in XML-Dokumenten zu deaktivieren. Hinweis: Diese Funktion wurde in PHP 8.0 als veraltet markiert und in PHP 8.1 entfernt. Moderne Anwendungen sollten stattdessen LIBXML_NONET verwenden oder DOMDocument direkt konfigurieren.

Was ist die Funktion libxml_disable_entity_loader()?

Die libxml_disable_entity_loader()-Funktion war ein integriertes PHP-Tool, das darauf ausgelegt war, die Auflösung externer Entitäten während der XML-Verarbeitung zu blockieren. Sie wurde hauptsächlich eingesetzt, um XML-External-Entity-(XXE)-Angriffe abzuwehren, bei denen Angreifer bösartige Entitätsreferenzen injizieren, um sensible Serverdateien auszulesen, Server-Side-Request-Forgery-(SSRF)-Angriffe durchzuführen oder Denial-of-Service-Bedingungen auszulösen.

So verwenden Sie die Funktion libxml_disable_entity_loader()

Die Funktion akzeptiert einen einzelnen booleschen Parameter. Die Übergabe von true deaktiviert das Laden externer Entitäten, während false (der Standardwert) es aktiviert.

Hier ist ein Beispiel für die veraltete Verwendung:

Veraltete Verwendung in PHP

php
<?php
  // Disable external entities (Deprecated in PHP 8.0, removed in 8.1)
  if (function_exists('libxml_disable_entity_loader')) {
    libxml_disable_entity_loader(true);
  }

  // Load an XML file into a DOMDocument object
  $doc = new DOMDocument();
  if (!$doc->load('example.xml')) {
    die('Failed to load XML file.');
  }
?>

In diesem Beispiel rufen wir die Funktion bedingt auf, um die Auflösung externer Entitäten zu deaktivieren, und laden anschließend die XML-Datei mit einer grundlegenden Fehlerbehandlung.

Seit PHP 8.1 wird empfohlen, beim Laden von XML das Flag LIBXML_NONET zu übergeben:

php
<?php
  $doc = new DOMDocument();
  $doc->load('example.xml', LIBXML_NONET);
?>

Fazit

Während libxml_disable_entity_loader() früher unverzichtbar war, um XML-Parser vor XXE-Schwachstellen zu schützen, ist es in modernen PHP-Versionen nicht mehr verfügbar. Entwickler sollten auf LIBXML_NONET umsteigen oder DOMDocument-Optionen explizit konfigurieren, um eine sichere XML-Verarbeitung zu gewährleisten.

Praxis

Welche Funktion hat die Methode libxml_disable_entity_loader() in PHP?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.