Задать вопрос
@bob_meister

Как защититься от разных URL запросов в Laravel?

Здравствуйте. Изучаю создание сайта на Laravel.
Меня интересует такой вопрос:
Например я сделал на сайте возможность создания и удаления групп.
Есть route:
Route::get('/group/delete/{id}', 'App\Http\Controllers\GroupController@delete')->name('group-delete');

т.е. ссылка удаления выглядит так: www.site.ru/group/delete/2 <- ID группы.
И конечно же любой пользователь тупо введя любое ID может удалить любую группу. Конечно же я добавил в функцию delete проверку того, является ли авторизованный пользователь администратором группы.
Но, таких функций у меня полно, где надо проверять, админ ли пользователь и т.д. Меня интересует, есть ли какой-нибудь другой способ борьбы с этим. Например, чтобы в ссылке не было видно ID группы, а само ID отправлялось другим способом, не через URL, и чтобы запросы вида www.site.ru/group/delete/2 не работали. Спасибо.
  • Вопрос задан
  • 206 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 2
JhaoDa
@JhaoDa
LaravelRUS Team
Во-первых, за удаление методом GET тебя ждёт спец. котёл в аду.

Во-вторых, читай документацию ларавел, про мидлвари и политики.

В-третьих, изучай основы HTTP, чтобы знать, как сделать
Например, чтобы в ссылке не было видно ID группы, а само ID отправлялось другим способом, не через URL, и чтобы запросы вида www.site.ru/group/delete/2 не работали.
Ответ написан
@Kostik_1993
Web Developer
Для глобальных проверок есть Middleware. Для более точных например на то что конкретный пользователь не может удалить конкретную группу есть Guards и Policies

Прятать ID из URI нет смысла, так как его все равно можно увидеть в теле запроса. Ну и да, удалять хотябы через POST метод, в идеале DELETE

В Laravel есть все на подобные задачи. Просто нужно сначала изучить фреймворк и язык
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Про удаление и контроль прав написали уже, добавлю про "сокрытие" id в урлах - есть вот такой пакет https://github.com/cybercog/laravel-optimus для этой цели, но в общем и целом - это косметика
Ответ написан
Комментировать
pLavrenov
@pLavrenov
Разработка сайтов
При создании модели можно добавлять UUID и использовать его. Но отставить обычные ID для отношений, чтобы не захламлять БД.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы