Багато зламів тривають тижнями й місяцями, перш ніж їх помітять, - часто ззовні (клієнти, журналісти, дослідники). Причина - журнали або не пишуться, або пишуться, але ніхто на них не реагує. OWASP Top 10:2025 називає категорію саме «журналювання й сповіщення»: записати замало, потрібна реакція.
Які події безпеки записувати:
- автентифікація: вдалі й невдалі входи, вихід, скидання пароля, зміна email і пароля, увімкнення/вимкнення 2FA;
- авторизація: відмови в доступі (
403), особливо серійні - ознака перебору чужих id; - адміністративні дії: зміна ролей і прав, видалення записів, зміна налаштувань, вхід під іншим користувачем (impersonation);
- операції з чутливими даними: експорт, масове вивантаження, перегляд персональних даних в адмінці;
- помилки валідації й підозрілі запити у великих кількостях;
- платіжні операції й зміни балансу;
- зміни API-ключів і токенів.
Що має бути в записі: час (з поясом), хто (id користувача, а не лише IP), що зроблено і з чим, звідки (IP, User-Agent), результат, ідентифікатор запиту для зв'язку з іншими журналами.
Чого не має бути: паролі, токени, повні номери карток, зайві персональні дані. Журнали - теж джерело витоків.
Захист самих журналів:
- окреме сховище, куди застосунок лише дописує - зловмисник з доступом до сервера не повинен мати змогу стерти сліди;
- розумний термін зберігання - і з погляду розслідувань, і з погляду захисту персональних даних;
- захист від ін'єкцій у журнали: переноси рядків у даних користувача можуть «підробити» записи.
Сповіщення - на події, що потребують реакції:
- сплеск невдалих входів (перебір паролів, credential stuffing);
- вхід адміністратора з нової країни чи пристрою;
- масовий експорт даних;
- серія
403/404на ресурси з ідентифікаторами; - зміна прав адміністратора.
У Laravel: окремий канал журналу для подій безпеки, події Login, Failed, PasswordReset з пакета автентифікації, пакет журналу дій (наприклад, spatie/laravel-activitylog) для змін моделей, відправлення в централізовану систему (SIEM, ELK, Sentry, хмарні журнали) з правилами сповіщень.