PHP 7.4.22 Released!

libxml_disable_entity_loader

(PHP 5 >= 5.2.11, PHP 7, PHP 8)

libxml_disable_entity_loaderHarici öğeleri yükleme yeteneğini iptal eder

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

Açıklama

libxml_disable_entity_loader(bool $iptal = true): bool

Harici öğeleri yükleme yeteneğini iptal eder/etkinleştirir. Harici öğelerin yüklenmesini devre dışı bırakmak, XML belgelerinin yüklenmesiyle ilgili genel sorunlara neden olabilir. Ancak, libxml 2.9.0'dan itibaren öğe ikamesi öntanımlı olarak devre dışıdır, bu nedenle dahili öğe gönderimlerini LIBXML_NOENT ile çözümlemeye gerek olmadığı sürece harici öğelerin yüklenmesini devre dışı bırakmaya gerek yoktur. Genel olarak, harici öğelerin yüklenmesini engellemek için libxml_set_external_entity_loader() kullanılması tercih edilir.

Değiştirgeler

iptal

DOM, XMLWriter ve XMLReader gibi libxml eklentilerinin harici öğeleri yüklemesini iptal etmek (true) veya etkinleştirmek (false) için kullanılır.

Dönen Değerler

Önceki değeri döndürür.

Ayrıca Bakınız

add a note add a note

User Contributed Notes 6 notes

up
9
vavra at 602 dot cz
3 years ago
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.
up
3
suconghou at gmail dot com
6 months ago
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);
}
up
3
simonsimcity
9 years ago
Using 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.11
up
2
phofstetter at sensational dot ch
7 years ago
Be mindful that this also disables url loading in simplexml_load_file() and likely other libxml based functions that deal with URLs
up
-2
brendan at bloodbone dot ws
7 years ago
This also seems to have an impact on <xsl:import /> statements if this is applied when loading XSLT for the XSLTProcessor class.
up
-6
daschtour at me dot com
7 years ago
This function was reported to be not thread safe. So this might affect php-scripts on the same server.
To Top