Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

libxml_disable_entity_loader

Pagina: 1
Acties:

  • Rob
  • Registratie: Februari 2000
  • Niet online
Een van de minst gedocumenteerde functies van PHP is libxml_disable_entity_loader. Maar het is wel een hele belangrijke als je bezig bent met XML.

Een goeie site die ik gevonden heb is:
http://phpsecurity.readth...st/Injection-Attacks.html
Hier vind je een stukje code
PHP:
1
2
3
4
$oldValue = libxml_disable_entity_loader(true);
$dom = new DOMDocument();
$dom->loadXML($xml);
libxml_disable_entity_loader($oldValue);


Dit is anders dan vele andere sites zeggen, die zeggen namelijk
PHP:
1
2
3
4
libxml_disable_entity_loader(true);
$dom = new DOMDocument();
$dom->loadXML($xml);
libxml_disable_entity_loader(false);


Kan iemand de logica vertellen achter het eerste stuk voorbeeldcode?

Daarbij ben ik bezig geweest met deze code en had ik de libxml_disable_entity_loader niet op false gezet. Op een of andere manier bleef deze hangen in het php proces en kon ik niet meer, na een aantal keer het script te hebben aangeroepen, de XML's inladen. Heeft iemand dat ook wel eens meegemaakt en hoe kan PHP dit blijven onthouden?

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


  • ReenL
  • Registratie: Augustus 2010
  • Laatst online: 14-09-2022
Logica achter het eerste stuk is dat de instellingen van php niet veranderd zijn na het runnen van de code. De waarde wordt weer terug gezet, waar het tweede stuk code entity_loader _ALTIJD_ enabled, ookal stond hij eerst niet aan.

Anders gezegd, buiten de scope van je script blijven je php settings gewoon zoals ze al stonden.

Die laatste zin snap ik niet helemaal. Maar als de libxml entity loader aan staat dan gaat hij externe resources laden, dit kan aardig wat tijd kosten (en beveiligingslekken veroorzaken).

  • Rob
  • Registratie: Februari 2000
  • Niet online
mijn laatste zin:
Het script deed een libxml_disable_entity_loader(true);
ging toen aan de slag met de XML maar er werd geen libxml_disable_entity_loader(false) gedaan.
Bij de tweede aanroep van hetzelfde script bleek dat libxml_disable_entity_loader nog steeds op true stond.
Is dat normaal?

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...