Безопасность в Laravel — это как ремень в старом «Жигуле». Формально есть, вроде работает, но если въехать в стену, спасёт разве что чудо. Многие разработчики любят повторять «ну Laravel же уже всё делает». Чушь. Laravel даёт инструменты, но если ты нацепил CSRF токен и считаешь себя киберпанковым солдатом, то готовься: твой прод через неделю будет продан на подпольном форуме за биток.
Разберём самые базовые штуки: аутентификация, авторизация, CSRF, валидация и пароли. Это минимум, который ты обязан держать в голове, если не хочешь стать героем поста «как нас взломали».
Аутентификация и авторизация: вход только для своих
Laravel реально упрощает жизнь с аутентификацией и авторизацией. Регистрация, логин, сброс пароля — всё на месте. Но вот прикол: большинство оставляет это «как есть» и думает, что сделал дело. А потом удивляется, почему у него админка открыта для всего мира.
Пример регистрации юзера выглядит красиво на бумаге:
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
$user = new User;
$user->name = 'John Doe';
$user->email = 'john@example.com';
$user->password = Hash::make('secret');
$user->save();
Auth::attempt(['email' => 'john@example.com', 'password' => 'secret']);
И вроде норм. Но если ты не проверил роли, права и не сделал нормальную авторизацию — считай, что любой школьник с Postman’ом у тебя уже админ.
CSRF: не серебряная пуля
Да, Laravel сам пихает @csrf в формы. Вот оно, святое поле:
<form method="POST" action="/profile">
@csrf
<!-- поля формы --> </form>
Красиво, но не обольщайся. CSRF — это не броня. Это защита от ленивых атак. Серьёзный чувак обойдёт это как два пальца. Поэтому CSRF-токен — это baseline, а не «сделал и забыл».
Валидация: фильтруй грязь на входе
Самая недооценённая вещь. Пока одни играются с JWT, другие забывают, что валидация в Laravel — реально мощная штука. Если пропустишь сырые данные, то SQL-инъекция или XSS не заставят себя ждать.
Пример:
public function store(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
]);
}
Код банальный, но хоть как-то спасает от мусора, который тебе суют в форму. Главное — не лениться добавлять кастомные правила.
Пароли: забудь про MD5 и SHA1
Если ты до сих пор хранишь пароли в виде md5('mypassword') — у меня для тебя плохие новости. Твой сайт уже в чьей-то коллекции дампов. Laravel делает хеширование через bcrypt и argon2, и это минимум, что стоит использовать:
use Illuminate\Support\Facades\Hash;
$hashedPassword = Hash::make('secret');
И да, не забывай про rate limiting на попытки входа. Иначе твой «защищённый» сайт превратится в бесплатный спортзал для брутфорсеров.
HTTPS: без него всё остальное мусор
Если у тебя до сих пор http:// в проде, то ты не разработчик, а поставщик персональных данных в даркнет. В Laravel настройка смешная:
APP_URL=https://yourdomain.com
И всё. Но половина проектов так и живёт без TLS, потому что «сертификат дорогой». Ага, только потом чинить последствия ещё дороже.
Итог: Laravel не виноват, если ты раздолбай
Laravel дал тебе инструменты, но если ты всё сделал «на отвали», то получишь дырявый прод и бессонные ночи. Настоящая безопасность — это не галочка в настройках, а постоянная паранойя. Доверяй фреймворку, но проверяй сам. И помни: твой код всегда будет первым кандидатом в чьей-то SQL-инъекции, если будешь писать как ленивый стажёр.
0 комментариев