🔥 How To: 6 частых ошибок безопасности в Laravel и как их исправить
Laravel — мощный и популярный фреймворк. Но вместе с популярностью он становится и мишенью для атак. Даже опытные разработчики иногда допускают ошибки, которые открывают лазейки для злоумышленников.
1️⃣ Завершаем все сессии после смены пароля
Ошибка: при смене пароля старые сессии на других устройствах остаются активными.
Исправление: используйте
👉 Почему важно: если токен украден, злоумышленник вылетит сразу после смены пароля.
2️⃣ Безопасная загрузка файлов
Ошибка: прямая ссылка на файлы (
Исправление: генерируйте временные подписанные ссылки (
👉 Почему важно: даже при утечке ссылка перестанет работать после срока действия.
3️⃣ Правильное связывание моделей в маршрутах
Ошибка: без scoping пользователь может подставить чужой ID.
Исправление: используйте
👉 Почему важно: предотвращает горизонтальную эскалацию прав.
4️⃣ Уникальные имена файлов
Ошибка: сохранение файлов под оригинальными именами ведёт к перезаписи.
Исправление: используйте UUID (
👉 Почему важно: два
5️⃣ Шифруем ID в URL
Ошибка: последовательные ID легко перебирать.
Исправление: шифруйте идентификаторы (
👉 Почему важно: атаки через инкремент ID становятся невозможны.
6️⃣ Шифрование чувствительных данных в БД
Ошибка: хранение API-ключей и персональных данных в открытом виде.
Исправление: используйте встроенные касты (
👉 Почему важно: даже при утечке базы данные останутся зашифрованы.
🔗 Читать статью
Библиотека пхпшника
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'
).👉 Почему важно: даже при утечке базы данные останутся зашифрованы.
🔗 Читать статью
Библиотека пхпшника
👍9