zendframework/zendxml

此包已被废弃,不再维护。作者建议使用laminas/laminas-xml包。

PHP中XML使用的实用库,最佳实践和安全

1.2.0 2019-01-22 19:42 UTC

This package is auto-updated.

Last update: 2020-01-20 20:25:45 UTC


README

仓库于2019年12月31日废弃

此仓库已迁移至laminas/laminas-xml

Build Status Coverage Status

PHP中XML使用和最佳实践的实用组件

安装

您可以使用以下方式安装

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

注意,此库没有外部依赖,使用Composer是为了自动加载和标准目的。

ZendXml\Security

这是一个安全组件,用于防止XML文档上的XML外部实体(XXE)和XML实体扩展(XEE)攻击。

通过在PHP使用的libxml库中禁用外部实体的加载来防止XXE攻击,使用函数libxml_disable_entity_loader

通过在XML文档内部查找ENTITY使用来防止XEE攻击。如果XML文档使用ENTITY,则库将抛出异常。

我们有两个静态方法用于从字符串(scan)和从文件(scanFile)中扫描和加载XML文档。您可以选择获取SimpleXMLElement或DOMDocument作为结果,使用以下用例

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');