In PHP 8.0 and later, PHP uses libxml versions from 2.9.0, libxml_disable_entity_loader is deprecated.
so it is now safe to remove all `libxml_disable_entity_loader` calls on php8
if you want Backwards Compatibility
use this snippet
if (\PHP_VERSION_ID < 80000) {
libxml_disable_entity_loader(true);
}libxml_disable_entity_loader
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
libxml_disable_entity_loader
Референца за `function.libxml-disable-entity-loader.php` со подобрена типографија и навигација.
libxml_disable_entity_loader
(PHP 5 >= 5.2.11, PHP 7, PHP 8)
libxml_disable_entity_loader — Оневозможи вчитување на надворешни ентитети
Оваа функција е DEPRECATED од PHP 8.0.0. Силно се обесхрабрува потпирањето на оваа функција.
= NULL
libxml_disable_entity_loader(bool
$disable = true): boolОневозможи/овозможи вчитување на надворешни ентитети. Имајте предвид дека оневозможувањето на вчитувањето на надворешни ентитети може да предизвика општи проблеми со вчитувањето на XML документи.
Од libxml 2.9.0, замена на ентитети е оневозможена по дифолт, така што нема потреба да се оневозможува вчитувањето на надворешни ентитети, освен ако постои потреба за решавање на внатрешни референци на ентитети со LIBXML_NOENT,
LIBXML_DTDVALID, или LIBXML_DTDLOAD. Генерално, претпочитано е да се користи libxml_set_external_entity_loader()
за да се спречи вчитувањето на надворешни ентитети. Константата LIBXML_NO_XXE може да се користи за да се спречи ова исто така (достапно само во Libxml >= 2.13.0, од PHP 8.4.0).
Параметри
Вратени вредности
Враќа претходната вредност.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 | Користењето null за dir_handle сега е застарено. Наместо тоа, треба експлицитно да се обезбеди последниот отворен рачка на директориумот. |
Види Исто така
- libxml_use_internal_errors() - Ги толкува XML-датотеката во објект
- libxml_set_external_entity_loader() - Ги менува стандардните надворешни вчитувачи на ентитети
- На
LIBXML_NOENTconstant - На
LIBXML_DTDVALIDconstant - На
LIBXML_NO_XXEconstant
Белешки од корисници 6 белешки
If is called
libxml_disable_entity_loader(true);
, it causes that new SoapClient(.) fails with
SOAP-ERROR: Parsing WSDL: Couldn't load from 'D:\path/dm_operations.wsdl' : failed to load external entity "D:\path/dm_operations.wsdl
because this wsdl imports a xsd as an another external file.
Tested on php 7.1.12, win x64.There is an extra \ should be deleted before PHP_VERSION_ID in the code which suconghou posted 2 years ago.
if (PHP_VERSION_ID < 80000) {
libxml_disable_entity_loader(true);
}Be mindful that this also disables url loading in simplexml_load_file() and likely other libxml based functions that deal with URLsUsing this function you can prevent a vulnerable to Local and Remote File Inclusion attacks.
You'll see it in an example where I load and validate the following string:
<!DOCTYPE scan [<!ENTITY test SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">]>
<scan>&test;</scan>
One way to prevent that the file in given back is to set this value to 0.
Please take a closer look at the release of symfony 2.0.11This also seems to have an impact on <xsl:import /> statements if this is applied when loading XSLT for the XSLTProcessor class.