laravel-composer-security

LARAVEL COMPOSER SECURITY COMMAND

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

This is a Laravel 5.1/5.2/5.3 package that provides an artisan command for testing security vulnerabilties into your composer.lock files. Is ready and tested for php7.0 and php7.1 too.

Table of Contents

PREREQUISITES

LARAVEL 5.1+ GUZZLE 6+

INSTALL

This package can be installed through Composer.

composer require padosoft/laravel-composer-security

You must install this service provider.

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

You don't need to register the command in app/Console/Kernel.php, because it provides by ComposerSecurtyCheckServiceProvider register() method.

You can publish the config file of this package with this command:

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

The following config file will be published in 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')
 );

In config folder you can copy from .env.example the settings for yours .env file used in composer-security-check.php. If you use mathiasgrimm/laravel-env-validator in config folder you'll find and example for validate the env settings.

USAGE

When the installation is done you can easily run command to print help:

php artisan composer-security:check

The composer-security:check command looks for every composer.lock file in the given path and foreach composer.lock check for security issues in the project dependencies: php composer-security:check

If you omit path argument, command look into current folder.

You can also pass the path as an argument: php composer-security:check /path/to/my/repos

You can use * in path argument as jolly character i.e. /var/www/*/*/

By default, the command displays the result in console, but you can also send an html email by using the --mailoption:

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

EXAMPLE:

Here is a basic example to check composer.lock into these dir:

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

Here is an example to send output report to mail:

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

Here is an example to ignore two composer.lock vulnerabilities into two dir (if command found any vulnerabilities into these dir, write it into output but the email subject isn't set to ALERT):

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

SCHEDULE COMMAND

You can schedule a daily (or weekly etc..) report easly, by adding this line into schedule method in app/Console/Kernel.php :

// 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'));
}

SCREENSHOOTS

OUTPUT CONSOLE: screenshoot

EMAIL VIEW WITH ALERT: screenshoot

EMAIL VIEW WITH VULNERABILITY WITELISTED: screenshoot

Testing

$ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Security

If you discover any security related issues, please email instead of using the issue tracker.

API Documentation

Please see API documentation at https://padosoft.github.io/laravel-composer-security

Credits

About Padosoft

Padosoft is a software house based in Florence, Italy. Specialized in E-commerce and web sites.

License

The MIT License (MIT). Please see License File for more information.