Laravel Security Checker
jorijn/laravel-security-checker
Enlightn Security Checker에 Laravel 기능을 추가했습니다. 취약점이 프로젝트에 영향을 줄 때 이를 검사하고, 선택적으로 이메일로 알려주는 명령을 제공합니다.
Laravel Security Checker
이 패키지는 로컬 composer.lock 파일을 Security Advisories Database와 손쉽게 대조해 주는 도구입니다.
검사 결과를 콘솔에 출력하거나, 정해진 일정에 따라 이메일로 받아볼 수 있습니다. Laravel의 마크다운 시스템을 사용하므로 기존 스타일과도 자연스럽게 어울립니다.
스크린샷
설치
다음 Composer 명령으로 패키지를 설치합니다.
composer require jorijn/laravel-security-checker설정
이메일
패키지가 이메일로 보고서를 보내도록 하려면 수신자를 지정해야 합니다.
방법 1
.env 파일에 추가합니다.
LCS_MAIL_TO="someone@example.net"
방법 2
설정 파일을 퍼블리시한 뒤 해당 파일에서 값을 변경합니다.
php artisan vendor:publish --provider="Jorijn\LaravelSecurityChecker\ServiceProvider" --tag="config"이메일 형식을 직접 제어하고 싶다면 다음 명령으로 뷰를 내보낼 수 있습니다.
php artisan vendor:publish --provider="Jorijn\LaravelSecurityChecker\ServiceProvider" --tag="views"기본적으로 취약점이 발견되지 않으면 이메일을 보내지 않습니다. 이 동작을 바꾸려면 .env 파일에 다음 항목을 추가하세요.
LCS_NOTIFY_WITHOUT_VULNERABILITIES=true
Slack
보고서를 Slack 채널로 보내려면 .env 파일에 Slack Webhook을 지정해야 합니다.
예:
LCS_SLACK_WEBHOOK=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
개발 의존성 제외하기
개발 의존성이 프로덕션에 배포되지 않는다면, .env 파일에 다음 항목을 추가해 검사 대상에서 제외할 수 있습니다.
LCS_EXCLUDE_DEV=true
알려진 취약점 허용하기
보고된 취약점이 내 프로젝트에 영향을 주지 않거나 위험을 감수하기로 했다면, CVE 식별자 또는 정확한 권고(advisory) 제목을 허용 목록에 추가해 보고에서 제외할 수 있습니다. .env 파일에서는 작은따옴표로 감싼 JSON 배열을 사용하세요.
LCS_ALLOW_LIST='["CVE-2024-1234","Example vulnerability title"]'
설정 파일을 퍼블리시했다면 allow_list에 일반 PHP 배열을 사용할 수도 있습니다.
주의할 점:
- 항목은 대소문자를 포함해 정확히 일치해야 합니다.
- 허용한 제목은 해당 이름의 권고가 있는 모든 패키지에서 무시됩니다.
- 잘못된 허용 목록은 무시되고 경고로 로그에 기록됩니다. 따라서 검사는 항상 실행되며, 실수로 결과가 숨겨지는 일은 없습니다.
스케줄링
이 패키지는 다음 명령을 제공합니다.
php artisan security-check:email일반 crontab에 등록하거나, 다음과 같이 Laravel 스케줄러(app/Console/Kernel.php)에 추가할 수 있습니다.
protected function schedule(Schedule $schedule)
{
$schedule->command(\Jorijn\LaravelSecurityChecker\Console\SecurityMailCommand::class)
->weekly();
}명령어로 실행하기
이 패키지는 Enlightn Security Checker 명령을 감싼 래퍼입니다. php artisan security-check:now로 호출할 수 있습니다.

번역
이 패키지를 사용 중인 언어로 번역해야 한다면, 다음 명령으로 번역 파일을 퍼블리시하면 됩니다.
php artisan vendor:publish --provider="Jorijn\LaravelSecurityChecker\ServiceProvider" --tag="translations"작성하신 언어의 번역을 풀 리퀘스트로 보내 주시면 다른 사용자에게도 큰 도움이 됩니다.