selective / archive-bomb-scanner
ZIP和PNG炸弹扫描器
2.1.0
2023-09-09 11:20 UTC
Requires
- php: ^8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- phpstan/phpstan: ^1
- phpunit/phpunit: ^10
- selective/rar: ^0.2 || ^0.3
- squizlabs/php_codesniffer: ^3
Suggests
- ext-zip: Use this extension to detect ZIP archive bombs
- selective/rar: Use this package to detect RAR archive bombs
README
PHP的ZIP和PNG炸弹扫描器。
功能
- ZIP归档炸弹检测
- RAR归档炸弹检测
- PNG炸弹检测
- 无依赖项
- 非常快速
要求
- PHP 8.1+
安装
composer require selective/archive-bomb-scanner
使用
扫描ZIP文件
use Selective\ArchiveBomb\Scanner\BombScanner; use Selective\ArchiveBomb\Engine\ZipBombEngine; use SplFileObject; $file = new SplFileObject('42.zip'); $scanner = new BombScanner(); $scanner->addEngine(new ZipBombEngine()); $scannerResult = $scanner->scanFile($file); if ($scannerResult->isBomb()) { echo 'Archive bomb detected!'; } else { echo 'File is clean'; }
扫描内存中的ZIP文件
use Selective\ArchiveBomb\BombScanner; use Selective\ArchiveBomb\Engine\ZipBombEngine; use SplTempFileObject; $file = new SplTempFileObject(); $file->fwrite('my file content'); $scanner = new BombScanner(); $scanner->addEngine(new ZipBombEngine()); $isBomb = $detector->scanFile($file)->isBomb(); // true or false
扫描RAR文件
use Selective\ArchiveBomb\Scanner\BombScanner; use Selective\ArchiveBomb\Engine\RarBombEngine; use SplFileObject; $file = new SplFileObject('10GB.rar'); $scanner = new BombScanner(); $scanner->addEngine(new RarBombEngine()); $scannerResult = $scanner->scanFile($file); if ($scannerResult->isBomb()) { echo 'Archive bomb detected!'; } else { echo 'File is clean'; }
扫描PNG文件
use Selective\ArchiveBomb\Scanner\BombScanner; use Selective\ArchiveBomb\Engine\PngBombEngine; use SplFileObject; $file = new SplFileObject('example.png'); $scanner = new BombScanner(); $scanner->addEngine(new PngBombEngine()); $scannerResult = $scanner->scanFile($file); if ($scannerResult->isBomb()) { echo 'PNG bomb detected!'; } else { echo 'File is clean'; }
许可证
MIT