t3g / svg-sanitize-elts7
PHP的SVG清理器
Requires
- php: ^5.5 || ^7.0
- ext-dom: *
- ext-libxml: *
Requires (Dev)
- phpunit/phpunit: ^4.8 || ^6.5
Replaces
- enshrined/svg-sanitize: 0.15.4.1
- dev-master
- 0.15.4.1
- 0.15.4
- 0.15.3
- 0.15.2
- 0.15.1
- 0.15.0
- 0.14.1
- 0.14.0
- 0.13.3
- 0.13.2
- 0.13.1
- 0.13.0
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.2
- 0.8.1
- 0.8.0
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.0
- 0.5.3.1
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.1
- 0.2.0
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-task/php55
- dev-fix/case-sensitive-attrs
- dev-feature/update-codeclimate-id
- dev-feature/fix-tests
- dev-develop
- dev-fix/31-xss
This package is auto-updated.
Last update: 2022-12-23 10:40:40 UTC
README
⚠️ 这是一个仅适用于TYPO3 CMS 7.6 ELTS的临时包,提供与PHP 5.5兼容的更改!一旦对TYPO3 CMS 7.6 ETLS的支持被取消,此包也将被弃用。在任何其他范围内使用此包均不受支持,也不会被支持。
安装
可以通过composer要求t3g/svg-sanitize-elts7
,或者下载仓库并使用旧方法包含它!
用法
使用起来相当简单。创建一个enshrined\svgSanitize\Sanitizer
的新实例,然后传递污秽的SVG/XML调用sanitize
基本示例
use enshrined\svgSanitize\Sanitizer; // Create a new sanitizer instance $sanitizer = new Sanitizer(); // Load the dirty svg $dirtySVG = file_get_contents('filthy.svg'); // Pass it to the sanitizer and get it back clean $cleanSVG = $sanitizer->sanitize($dirtySVG); // Now do what you want with your clean SVG/XML data
输出
这将返回一个清理过的SVG/XML字符串,或者在XML解析失败时返回布尔值false
(通常是由于文件格式不正确)。
选项
您可以通过使用Sanitizer::setAllowedTags
和Sanitizer::setAllowedAttrs
方法分别传递您自己的白名单标签和属性。
这些方法要求您实现enshrined\svgSanitize\data\TagInterface
或enshrined\svgSanitize\data\AttributeInterface
。
移除远程引用
您可以选择移除引用远程文件的属性,这将阻止HTTP泄露,但会增加清理器的开销。
默认为false,设置为true以移除引用。
$sanitizer->removeRemoteReferences(true);
查看清理问题
您可以使用getXmlIssues()
方法返回在清理过程中发生的问题数组。
这可能对记录或向用户解释为什么SVG被拒绝很有用。
$issues = $sanitizer->getXmlIssues();
压缩
您可以通过调用$sanitizer->minify(true);
来压缩XML输出。
演示
可在以下位置找到演示: http://svg.enshrined.co.uk/
WordPress
我刚刚发布了一个包含此代码的WordPress插件,您可以从中清理WordPress上传。它可在WordPress插件目录中找到:https://wordpress.org/plugins/safe-svg/
Drupal
Michael Potter已慷慨地为此库创建了一个Drupal模块,可在以下位置找到:https://www.drupal.org/project/svg_sanitizer
TYPO3
本库的TYPO3 CMS集成作为一个composer包t3g/svg-sanitizer
可用,位于https://github.com/TYPO3GmbH/svg_sanitizer
测试
您可以通过从本包的基本目录运行vendor/bin/phpunit
来运行这些测试。
通过CLI独立扫描文件
多亏了gudmdharalds的工作,现在有一个独立的扫描器可以通过CLI使用。
任何错误将以JSON格式输出。请参阅该PR以获取示例。
使用方法如下:php svg-scanner.php ~/svgs/myfile.svg
待办事项
对SVG/XML进行更广泛的测试将非常令人愉快,我将尝试尽快添加这些测试。如果您想为我完成这项工作,请做并提交一个PR!