padosoft/laravel-composer-security

composer.lock 的安全检查器。

1.5.1 2017-01-07 10:33 UTC

README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads SensioLabsInsight

这是一个为 Laravel 5.1/5.2/5.3 提供测试 composer.lock 文件安全漏洞的 artisan 命令的 package。它也适用于 php7.0 和 php7.1。

目录

先决条件

LARAVEL 5.1+ GUZZLE 6+

安装

此 package 可以通过 Composer 安装。

composer require padosoft/laravel-composer-security

您必须安装此服务提供者。

// config/app.php
'provider' => [
    ...
    Padosoft\LaravelComposerSecurity\ComposerSecurityCheckServiceProvider::class,
    ...
];

您不需要在 app/Console/Kernel.php 中注册命令,因为它由 ComposerSecurtyCheckServiceProvider 的 register() 方法提供。

您可以使用以下命令发布此 package 的配置文件

php artisan vendor:publish --provider="Padosoft\LaravelComposerSecurity\ComposerSecurityCheckServiceProvider"

以下配置文件将发布到 config/composer-security-check.php

return array(
    'mailSubjectSuccess' => env(
        'SECURITY_CHECK_SUBJECT_SUCCESS',
        '[composer-security-check]: Ok - no vulnerabilities detected.'
    ),
    'mailSubjetcAlarm' => env(
        'SECURITY_CHECK_SUBJECT_ALARM',
        '[composer-security-check]: Alarm - vulnerabilities detected.'
    ),
    'mailFrom' => env('SECURITY_CHECK_MESSAGE_FROM', 'info@example.com'),
    'mailFromName' => env('SECURITY_CHECK_MESSAGE_FROM_NAME', 'Info Example'),
    'mailViewName' => env('SECURITY_CHECK_MAIL_VIEW_NAME', 'composer-security-check::mail'),
    'logFilePath' => env('SECURITY_CHECK_LOG_FILE_PATH', storage_path().'/composersecurityCheck.log')
 );

在配置文件夹中,您可以从 .env.example 复制设置到您的 .env 文件中,该文件用于 composer-security-check.php。如果您在配置文件夹中使用 mathiasgrimm/laravel-env-validator,您将找到用于验证环境设置的示例。

使用

安装完成后,您可以轻松运行命令以打印帮助信息

php artisan composer-security:check

composer-security:check 命令会在给定路径中查找每个 composer.lock 文件,并对每个 composer.lock 检查项目依赖中的安全问题: php composer-security:check

如果您省略路径参数,命令将在当前文件夹中查找。

您也可以将路径作为参数传递: php composer-security:check /path/to/my/repos

您可以在路径参数中使用 * 作为通配符,例如 /var/www/*/*/

默认情况下,命令将在控制台显示结果,但您也可以使用 --mail 选项发送 HTML 邮件

php composer-security:check /path/to/my/repos --mail=mymail@mydomain.me

示例

以下是一个基本示例,用于检查这些目录中的 composer.lock

php artisan composer-security:check "/dir/to/check/*/*/"

以下是一个将输出报告发送到邮件的示例

php artisan composer-security:check "/dir/to/check/*/*/" --mail=mymail@mydomain

以下是一个忽略两个目录中两个 composer.lock 漏洞的示例(如果命令在这些目录中找到任何漏洞,则将其写入输出,但电子邮件主题不会被设置为警报)

php artisan composer-security:check "/dir/to/check/*/*/" --mail=mymail@mydomain --whitelist="/dir/to/put/in/witelist,/another/dir/to/put/in/witelist"

定时命令

您可以通过将以下行添加到 app/Console/Kernel.php 中的 schedule 方法来轻松安排每日(或每周等)报告

// app/console/Kernel.php

protected function schedule(Schedule $schedule)
{
    ...
	$schedule->command('composer-security:check "/dir/to/check/" --mail=mymail@mydomain')
            ->daily()
            ->withoutOverlapping()
            ->sendOutputTo(Config::get('composer-security-check.logFilePath'));
}

截图

控制台输出: screenshoot

带有警报的电子邮件视图: screenshoot

漏洞白名单的电子邮件视图: screenshoot

测试

$ composer test

贡献

有关详细信息,请参阅 CONTRIBUTINGCONDUCT

安全

如果您发现任何与安全相关的问题,请通过电子邮件报告,而不是使用问题跟踪器。

API 文档

请参阅API文档:https://padosoft.github.io/laravel-composer-security

致谢

关于 Padosoft

Padosoft是一家位于意大利佛罗伦萨的软件公司。专注于电子商务和网站。

许可证

MIT许可(MIT)。请参阅许可文件以获取更多信息。