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. Під час сканування видно прогрес конвеєра та живі лічильники серйозності. По завершенні відображається таблиця результатів з можливістю сортування, бейджами серйозності, групуванням за категоріями та панеллю деталей з описами, фрагментами коду й рекомендаціями для виправлення.
Ward містить чотири незалежні двигуни сканування:
.env, зокрема: увімкнений debug у production, відсутній або слабкий APP_KEY, та витік секретів у .env.example.config/*.php, що виявляють жорстко зашиті креденшіали, небезпечні сесійні прапори, CORS із wildcard-джерелами та відсутні опції безпеки.composer.lock, щоб знайти вразливі пакети Packagist. Оскільки запити йдуть до живих даних, результати відображають актуальні поради, а не стан на момент останнього релізу інструмента.eval), XSS (неекрановане виведення в Blade, інʼєкція JavaScript), артефакти дебагу (dd(), dump(), phpinfo()), слабка криптографія (md5, sha1, небезпечні RNG), проблеми конфігурації (CORS, CSRF, mass assignment) та прогалини в аутентифікації (відсутній middleware, відсутнє обмеження швидкості).Налаштуйте формати виводу в ~/.ward/config.yaml:
output:
formats: [json, sarif, html, markdown]
dir: ./reports
Ward повертає ненульовий код завершення, якщо знайдені знахідки заданого рівня серйозності, тому його просто використовувати для блокування деплоїв:
ward scan . --output json --fail-on high
Приклад для GitHub Actions у документації проєкту:
Якщо команда хоче зафіксувати поточні знайдені проблеми, не вимикаючи перевірки для майбутніх, 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.
Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту
Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу
У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту