SensioLabs propose une API qui permet de détecter les dépendances contenant des vulnérabilités de sécurité.
Il utilise le fichier composer.lock
du projet pour parser les différentes librairies.
L’outil peut être interroger via le terminal, cURL, ou directement dans le code PHP.
Terminal
php security-checker security:check /path/to/composer.lock
cURL
curl -H "Accept: text/plain" https://security.sensiolabs.org/check_lock -F
lock=@/path/to/composer.lock
Voici comment ajouter facilement un test de sécurité à votre projet Symfony via un test unitaire :
namespace Tests\AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use SensioLabs\Security\SecurityChecker;
class SecurityControllerTest extends WebTestCase
{
public function testIndex()
{
self::bootKernel();
$dirProject = static::$kernel->getContainer()->getParameter('kernel.project_dir');
$checker = new SecurityChecker();
$alerts = $checker->check($dirProject . '/composer.lock');
$this->assertCount(0, $alerts);
}
}
De cette manière, si une librairie présente une faille de sécurité, PHPUnit lèvera une exception qui pourra être catchée par votre outil de CI (Jenkins par exemple).