Ward — сканер безпеки, оптимізований під Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 04 березня, 2026
Ward — консольний сканер безпеки для Laravel, який аналізує структуру проєкту (маршрути, контролери, Blade‑шаблони, конфіги, .env і залежності) та виконує контекстні перевірки замість загального пошуку шаблонів. Підтримує сканування .env і конфігів, перевірку залежностей, різні формати звітів, CI‑інтеграцію, baseline та налаштовувані правила — хочете дізнатися, як його впровадити?

Ward, створений El Jakani Yassine, — це командний сканер безпеки на Go, орієнтований на структуру Laravel. Замість загального пошуку патернів у кодовій базі, він спершу аналізує структуру проєкту — маршрути, моделі, контролери, middleware, шаблони Blade, файли конфігурації, змінні оточення та залежності — і лише потім виконує цілеспрямовані перевірки в цьому контексті.

Встановлення

Ward поширюється як Go-бінарник, тож переконайтеся, що Go встановлено, після чого виконайте:

go install github.com/eljakani/ward@latest
 
# Make sure $GOPATH/bin is in your PATH
export PATH="$PATH:$(go env GOPATH)/bin"

Після встановлення запустіть ward init — це створить ~/.ward/ з файлом конфігурації за замовчуванням, понад 42 вбудованими правилами, впорядкованими за категоріями, а також директоріями для звітів та історії сканувань.

Сканування проєкту

Вкажіть Ward локальну папку або віддалений Git-репозиторій:

# Local project
ward scan /path/to/laravel-project
 
# Remote repository (shallow cloned)
ward scan https://github.com/user/laravel-project.git

У терміналі Ward відкриває TUI. Під час сканування видно прогрес конвеєра та живі лічильники серйозності. По завершенні відображається таблиця результатів з можливістю сортування, бейджами серйозності, групуванням за категоріями та панеллю деталей з описами, фрагментами коду й рекомендаціями для виправлення.

Скріншот TUI Ward
Скріншот TUI Ward

Що перевіряє

Ward містить чотири незалежні двигуни сканування:

Формати виводу

Налаштуйте формати виводу в ~/.ward/config.yaml:

output:
  formats: [json, sarif, html, markdown]
  dir: ./reports

Інтеграція в CI/CD

Ward повертає ненульовий код завершення, якщо знайдені знахідки заданого рівня серйозності, тому його просто використовувати для блокування деплоїв:

ward scan . --output json --fail-on high

Приклад для GitHub Actions у документації проєкту:

Робота з baseline

Якщо команда хоче зафіксувати поточні знайдені проблеми, не вимикаючи перевірки для майбутніх, Ward підтримує workflow з baseline:

# Capture current state
ward scan . --output json --update-baseline .ward-baseline.json
 
# On subsequent runs, suppress known findings and fail only on new ones
ward scan . --output json --baseline .ward-baseline.json --fail-on high

Коміт .ward-baseline.json у репозиторій дає змогу відстежувати, які знайдені проблеми визнані, і виявляти регресії в CI.

Користувацькі правила

Киньте .yaml-файли в ~/.ward/rules/, щоб додати власні перевірки. Правила підтримують regex- або підрядкові пошуки, перевірку існування файлу та негативні патерни, що спрацьовують, коли чогось бракує — наприклад, маршрути без @csrf. Можна таргетити PHP-файли, шаблони Blade, файли конфігурації, .env, маршрути, міграції або JavaScript.

rules:
  - id: TEAM-001
    title: "Hardcoded internal service URL"
    severity: medium
    patterns:
      - type: regex
        target: php-files
        pattern: 'https?://internal-service\.\w+'

Вбудовані правила можна вимкнути або змінити їхню серйозність у config.yaml без редагування самих файлів правил.

Історія сканувань

Ward зберігає кожен результат у ~/.ward/store/ і при наступних запусках показує diff від попереднього сканування — наприклад, «2 new, 3 resolved (12→11)» — щоб ви бачили, як змінюється безпековий стан проєкту з часом.

Перегляньте вихідний код і почніть роботу на Eljakani/ward на GitHub.

Популярні

Logomark Logotype

Створення MCP-серверів на PHP

Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту

Logomark Logotype

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту