libxml_set_external_entity_loader
Change le chargeur d'entités externes par défaut
&reftitle.description;
boollibxml_set_external_entity_loader
callablenullresolver_function
Change le chargeur d'entités externes par défaut.
Ceci peut être utilisé pour réprimer l'expansion d'entités externes arbitraire
pour prévenir les attaques XXE, même si LIBXML_NOENT a
été définie pour l'opération respective, et ceci est généralement préférable
à appeler libxml_disable_entity_loader.
&reftitle.parameters;
resolver_function
Un callable avec la signature suivante :
resourcestringnullresolver
stringpublic_id
stringsystem_id
arraycontext
public_id
L'ID public.
system_id
L'ID système.
context
Un tableau contenant quatre éléments "directory", "intSubName",
"extSubURI" et "extSubSystem".
Cette callable devrait retourner une &resource;, une &string; par laquelle
une ressource peut être ouverte. Si &null; est retourné, la résolution de
référence d'entité échouera.
&reftitle.returnvalues;
&return.success;
&reftitle.examples;
Exemple avec libxml_set_external_entity_loader
bar
XML;
$dtd = <<
DTD;
libxml_set_external_entity_loader(
function ($public, $system, $context) use($dtd) {
var_dump($public);
var_dump($system);
var_dump($context);
$f = fopen("php://temp", "r+");
fwrite($f, $dtd);
rewind($f);
return $f;
}
);
$dd = new DOMDocument;
$r = $dd->loadXML($xml);
var_dump($dd->validate());
?>
]]>
&example.outputs;
NULL
["intSubName"] => NULL
["extSubURI"] => NULL
["extSubSystem"] => NULL
}
bool(true)
]]>
&reftitle.seealso;
libxml_disable_entity_loader