This repository has been archived on 2022-02-10. You can view files and clone it, but cannot push or open issues or pull requests.
rangitaki/vendor/zendframework/zendxml
Marcel Kapfer (mmk2410) 60b094d5fa add composer's vendor directory 2016-05-07 12:59:40 +02:00
..
library/ZendXml add composer's vendor directory 2016-05-07 12:59:40 +02:00
tests add composer's vendor directory 2016-05-07 12:59:40 +02:00
.gitignore add composer's vendor directory 2016-05-07 12:59:40 +02:00
.travis.yml add composer's vendor directory 2016-05-07 12:59:40 +02:00
CHANGELOG.md add composer's vendor directory 2016-05-07 12:59:40 +02:00
LICENSE.md add composer's vendor directory 2016-05-07 12:59:40 +02:00
README.md add composer's vendor directory 2016-05-07 12:59:40 +02:00
composer.json add composer's vendor directory 2016-05-07 12:59:40 +02:00

README.md

ZendXml

An utility component for XML usage and best practices in PHP

Installation

You can install using:

curl -s https://getcomposer.org/installer | php
php composer.phar install

Notice that this library doesn't have any external dependencies, the usage of composer is for autoloading and standard purpose.

ZendXml\Security

This is a security component to prevent XML eXternal Entity (XXE) and XML Entity Expansion (XEE) attacks on XML documents.

The XXE attack is prevented disabling the load of external entities in the libxml library used by PHP, using the function libxml_disable_entity_loader.

The XEE attack is prevented looking inside the XML document for ENTITY usage. If the XML document uses ENTITY the library throw an Exception.

We have two static methods to scan and load XML document from a string (scan) and from a file (scanFile). You can decide to get a SimpleXMLElement or DOMDocument as result, using the following use cases:

use ZendXml\Security as XmlSecurity;

$xml = <<<XML
<?xml version="1.0"?>
<results>
    <result>test</result>
</results>
XML;

// SimpleXML use case
$simplexml = XmlSecurity::scan($xml);
printf ("SimpleXMLElement: %s\n", ($simplexml instanceof \SimpleXMLElement) ? 'yes' : 'no');

// DOMDocument use case
$dom = new \DOMDocument('1.0');
$dom = XmlSecurity::scan($xml, $dom);
printf ("DOMDocument: %s\n", ($dom instanceof \DOMDocument) ? 'yes' : 'no');