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
// 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
$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?