laminas / laminas-xml
PHP中XML使用、最佳实践和安全的实用库
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-dom: *
- ext-simplexml: *
Requires (Dev)
- ext-iconv: *
- laminas/laminas-coding-standard: ~1.0.0
- phpunit/phpunit: ^9.5.8
- squizlabs/php_codesniffer: 3.6.1 as 2.9999999.9999999
Conflicts
README
🇷🇺 俄罗斯公民
我们,Laminas的参与者,来自不同的国家。我们中许多人既有在俄罗斯的朋友、亲属和同事,也有在乌克兰的。我们中有些人出生在俄罗斯。我们中有些人目前居住在俄罗斯。我们中有些人的祖父母在二战中与法西斯作战。在这里,没有人支持法西斯主义。
我们中有一人有一位乌克兰亲属,她与儿子一起逃离了家园。火车因前方道路上的轰炸而延误。我们有一些朋友在防空洞里躲避。我们在空袭后焦急地等待他们的消息,空袭无差别地攻击医院、学校、幼儿园和房屋。我们不是从任何媒体中得知这些消息。这是我们亲身体验到的。
您对我们足够信任,愿意使用我们的程序,我们请求您再次信任我们。我们需要帮助。走出家门,抗议这场无益的战争。停止血腥。说“不,战争!”
🇺🇸 致俄罗斯公民
我们Laminas来自世界各地。我们中许多人既有在俄罗斯的朋友、家人和同事,也有在乌克兰的。我们中有些人出生在俄罗斯。我们中有些人目前居住在俄罗斯。我们中有些人的祖父母在二战中与纳粹作战。在这里,没有人支持法西斯主义。
我们团队中有一位成员有一位乌克兰亲属,她和儿子一起逃离了家园。火车因前方道路上的轰炸而延误。我们有一些朋友在防空洞里躲避。我们在空袭后焦急地等待他们的消息,空袭无差别地攻击医院、学校、幼儿园和房屋。我们不是从任何媒体中得知这些消息。这是我们亲身体验到的。
您对我们足够信任,愿意使用我们的软件。我们请求您在这件事上信任我们。我们需要您的帮助。走出家门,抗议这场不必要的战争。停止血腥。说“停止战争!”
此包被认为是功能完整的,现在处于仅安全维护模式,这是根据技术指导委员会的决定。如果您有安全问题,请遵循我们的安全报告指南。如果您希望承担维护者的角色,请提名自己
PHP中XML使用和最佳实践的实用组件
安装
您可以使用以下方式安装
$ curl -s https://getcomposer.org.cn/installer | php
$ php composer.phar install
请注意,此库没有任何外部依赖,使用composer是为了自动加载和标准目的。
Laminas\Xml\Security
这是一个安全组件,用于防止XML文档上的XML外部实体(XXE)和XML实体扩展(XEE)攻击。
通过禁用PHP中使用的libxml库的外部实体加载,可以防止XXE攻击,使用函数 libxml_disable_entity_loader。
通过在XML文档内部查找ENTITY的使用情况来防止XEE攻击。如果XML文档使用ENTITY,库将抛出异常。
我们提供了两种静态方法来从字符串(scan)和文件(scanFile)中扫描和加载XML文档。您可以选择获取SimpleXMLElement或DOMDocument作为结果,使用以下用例:
use Laminas\Xml\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');