Laravel — мощный и популярный фреймворк. Но вместе с популярностью он становится и мишенью для атак. Даже опытные разработчики иногда допускают ошибки, которые открывают лазейки для злоумышленников.
1️⃣ Завершаем все сессии после смены пароля
Ошибка: при смене пароля старые сессии на других устройствах остаются активными.
Исправление: используйте
logoutOtherDevices().👉 Почему важно: если токен украден, злоумышленник вылетит сразу после смены пароля.
2️⃣ Безопасная загрузка файлов
Ошибка: прямая ссылка на файлы (
/storage/invoices/invoice1.pdf) позволяет угадывать URL.Исправление: генерируйте временные подписанные ссылки (
URL::temporarySignedRoute).👉 Почему важно: даже при утечке ссылка перестанет работать после срока действия.
3️⃣ Правильное связывание моделей в маршрутах
Ошибка: без scoping пользователь может подставить чужой ID.
Исправление: используйте
->scopeBindings().👉 Почему важно: предотвращает горизонтальную эскалацию прав.
4️⃣ Уникальные имена файлов
Ошибка: сохранение файлов под оригинальными именами ведёт к перезаписи.
Исправление: используйте UUID (
Str::uuid()).👉 Почему важно: два
profile.jpg больше не сотрут друг друга.5️⃣ Шифруем ID в URL
Ошибка: последовательные ID легко перебирать.
Исправление: шифруйте идентификаторы (
Crypt::encryptString).👉 Почему важно: атаки через инкремент ID становятся невозможны.
6️⃣ Шифрование чувствительных данных в БД
Ошибка: хранение API-ключей и персональных данных в открытом виде.
Исправление: используйте встроенные касты (
'api_key' => 'encrypted').👉 Почему важно: даже при утечке базы данные останутся зашифрованы.
🔗 Читать статью
Библиотека пхпшника