Три класи автоматизованих перевірок безпеки шукають різне і доповнюють одне одного.
SAST (Static Application Security Testing) - аналіз вихідного коду без запуску:
- знаходить небезпечні шаблони: конкатенацію в SQL,
eval,unserializeданих користувача, виведення без екранування; - taint-аналіз відстежує, чи потрапляють дані з запиту (
$request->input()) у небезпечні місця (DB::raw,exec) без очищення; - інструменти для PHP: Psalm (taint-аналіз
--taint-analysis), Semgrep з правилами для PHP і Laravel, SonarQube; PHPStan з пакетами правил для частини перевірок; - плюси: працює рано, в PR, вказує на рядок коду;
- мінуси: хибні спрацьовування, не бачить конфігурації й поведінки під час виконання.
DAST (Dynamic Application Security Testing) - атакує запущений застосунок ззовні, як зловмисник:
- знаходить те, що видно лише в роботі: відсутні заголовки безпеки, відкриті службові файли, XSS і ін'єкції у відповідях, проблеми TLS, налагоджувальні сторінки;
- інструменти: OWASP ZAP (зокрема в CI в режимі baseline scan), Burp Suite, Nuclei з шаблонами для відомих вразливостей;
- плюси: реальна поведінка, мало хибних спрацьовувань на конфігураційних проблемах;
- мінуси: не бачить коду, погано покриває логіку за авторизацією, повільний.
SCA (Software Composition Analysis) - аналіз залежностей:
- зіставляє версії пакетів з базами вразливостей, перевіряє ліцензії, покинуті пакети;
- інструменти:
composer audit,npm audit, Dependabot, Renovate, Snyk, OSV-Scanner, Trivy (ще й для Docker-образів).
Чого не знайде жоден автоматичний інструмент: логічні вразливості й контроль доступу - «чи може користувач A побачити замовлення B», «чи можна оплатити замовлення за ціною 0». Для цього - тести авторизації, рев'ю коду й ручне тестування.
Практичний набір для Laravel-проєкту:
- у кожному PR:
composer audit, PHPStan/Larastan, Semgrep чи Psalm з taint-аналізом для критичних частин; - за розкладом: DAST (ZAP baseline) проти staging;
- Dependabot/Renovate для оновлень;
- тести на авторизацію для кожного ендпойнта з ідентифікатором.
Головне - реакція на результати: інструмент, звіт якого ніхто не читає, лише створює ілюзію захищеності.
Докладніше в документації: OWASP: інструменти аналізу вихідного коду