bernardosecades / packagist-security-checker
检查您依赖项中可能存在的错误
Requires
- php: ^5.5|^7.0
- doctrine/inflector: ^1.1
- guzzlehttp/guzzle: ^6.2
- symfony/console: ^2.2|^3.0
- symfony/finder: ^2.2|^3.0
- symfony/process: ^2.2|^3.0
Requires (Dev)
- bernardosecades/php-quality-tools: ^1.0
- phpunit/phpunit: ^5.5
This package is not auto-updated.
Last update: 2024-09-18 20:04:32 UTC
README
关于
检查您依赖项中可能存在的错误(公开和私有依赖项)的工具。它基于 semver 来检测依赖项中的错误。
示例
在您的 composer.lock 中有这个包
"name": "twig/twig",
"version": "v1.24.1",
版本遵循格式:MAJOR.MINOR.PATCH,更多信息请参见 semver,因此如果 Packagist 中存在具有相同 MAJOR、MINOR 和下一个补丁版本的相同包,则意味着您的依赖项中存在可能的错误,并且您应该更新它们。
为什么?
Composer
使用 Composer,您可以知道您的依赖项是否需要更新,例如
composer outdate
此命令将显示您可以更新的包及其最新版本,但有时如果不需要这些包的新功能,则无需更新它们,但如果您的依赖项中有错误修复,则至少应将它们更新到最后的 PATCH 版本,您可以从 Packagist 安全检查器中获取这些信息。
SensioLabs - 安全检查器
这是一个由 SensioLabs 创建的出色工具。它检查您的应用程序是否使用了具有已知安全漏洞的依赖项。它使用 SensioLabs 安全检查 Web 服务和安全建议数据库。
通常,大多数流行库的错误报告给安全建议数据库,但不太流行的库可能没有报告或其数据库可能未更新。此外,此服务仅适用于公共存储库。
Packagist 安全检查器
Packagist 安全检查器使用 packagist 的 API 并使用语义版本控制来检测可能的错误。如果它们在 packagist 中启用,则它可以与流行和不流行的库一起使用。
此工具还可以用于您公司中的 packagist 的实例,因此在这种情况下可以检测私有存储库中的可能错误。
限制
- 如果包不遵循语义版本控制(例如:标签 v0.9 而不是 v0.9.0),则该包将被忽略,工具无法检查它。
- 可能会出现未正确使用语义版本控制的情况,并显示不良结果,但您始终可以检查该存储库的更改日志文件并自行确认。
用法
查看所有报告
./bin/packagist-security-checker sc <path-composer-lock-file>
仅查看错误
./bin/packagist-security-checker sc <path-composer-lock-file> --only-bugs
以 JSON 格式获取报告
./bin/packagist-security-checker sc <path-composer-lock-file> --only-bugs --format=json
使用您自己的 packagist 实例执行工具
./bin/packagist-security-checker sc <path-composer-lock-file> --packagist-url=https://packagist.mycompany.com
集成
您可以轻松地将检查器集成到您的项目中
在您的 Symfony 控制台应用程序中添加命令
在您的 Symfony 控制台应用程序中使用 PackagistSecurityCheckerCommand
类
use BernardoSecades\Packagist\SecurityChecker\PackagistSecurityChecker; use BernardoSecades\Packagist\SecurityChecker\Command\PackagistSecurityCheckerCommand; $app = new Application(); $app->add(new PackagistSecurityCheckerCommand(new PackagistSecurityChecker()));
在您的代码中直接使用类
或直接在您的代码中使用 PackagistSecurityChecker
类
use BernardoSecades\Packagist\SecurityChecker\PackagistSecurityChecker; $ch = new PackagistSecurityChecker(); $reportPackages = $ch->check('/path/composer.lock');
安装
composer require bernardosecades/packagist-security-checker --dev
.phar 文件
您还可以使用已构建的最后构建的 .phar
。
$ git clone git@github.com:bernardosecades/packagist-security-checker.git
$ cd packagist-security-checker
$ php build/packagist-security-checker.phar
您可以复制 .phar
文件作为全局脚本
$ cp build/packagist-security-checker.phar /usr/local/bin/packagist-security-checker
编译
您还可以编译该包的自己的版本。(请记住,您需要在您的 php.ini 中设置 phar.readonly = Off)。
$ git clone git@github.com:bernardosecades/packagist-security-checker.git
$ cd packagist-security-checker.git
$ composer install
$ php bin/compile
$ sudo chmod +x build/packagist-security-checker.phar
$ build/packagist-security-checker.phar
您可以复制 .phar
文件作为全局脚本
$ cp build/packagist-security-checker.phar /usr/local/bin/packagist-security-checker
屏幕截图
./bin/packagist-security-checker sc tests/fixtures/composer.lock
./bin/packagist-security-checker sc tests/fixtures/composer.lock --only-bugs
./bin/packagist-security-checker sc tests/fixtures/composer.lock --only-bugs --format=json