• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zabezpieczenie formularza - Laravel

VPS Starter Arubacloud
–1 głos
471 wizyt
pytanie zadane 13 lutego 2019 w PHP przez Greeenone Pasjonat (16,100 p.)

Hej,

Mam pewne pytanie dotyczące formularza. Zauważyłem, że po zmianie ID w linku formularza, ten aktualizuje dane dla użytkownika z owym ID.

Zrobiłem zabezpieczenie tego nadpisując pobrane ID poprze ID zalogowanego użytkownika.

  public function update(CreateUserSettingsRequest $request, $id){

    $id = Auth::user()->id;

    $dataUpdate = User::find($id);

    $dataUpdate->update($request->all());

    return redirect()->back();

  }

Czy to jest dobry sposób czy lepiej zrobić to za pomocą middleware ?

1 odpowiedź

+1 głos
odpowiedź 14 lutego 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
wybrane 14 lutego 2019 przez Greeenone
 
Najlepsza
Zasadnicze pytanie: po co robić pobieranie id użytkownika do aktualizacji z linku jeśli chcesz (jak rozumiem) zawsze aktualizować dane zalogowanego użytkownika? To nielogiczne. Albo ktoś może edytować różnych użytkowników (ewentualnie z jakimiś ograniczeniami) i wtedy pobiera informacje z linka albo może edytować tylko siebie i taka informacja jest niepotrzebna.

A nawet jeśli już miałbym coś takiego robić to Twoja metoda też jest dla mnie nielogiczna. Wysyłasz w adresie że chodzi o dane id, w kodzie ono nagle się zmienia na zupełnie inne i aktualizuje kogoś innego. Jasne, jak się ktoś zagłębi w kod to na pewno zobaczy co tam się dzieje. Jednak widząc adres np. /users/5 w życiu by mi do głowy nie przyszło, że to zaktualizuje użytkownika aktualnie zalogowanego (nadpisze sobie id), a nie o id 5 jak podałem. Jeżeli miałoby koniecznie tak zostać to dodałbym np. middleware, który sprawdzi czy mogę edytować danego użytkownika (czy zostało podane id mojego usera) - gdy tak to przechodzi, gdy nie rzuca 403.
komentarz 14 lutego 2019 przez Greeenone Pasjonat (16,100 p.)
edycja 14 lutego 2019 przez Greeenone

W momencie kiedy używam Patch i nie podaję mu $id, to ten wypluwa mi błąd

Missing required parameters for [Route: ] [URI: settings/{id}]

Chciałem po prostu ukryć z url'u ID użytkownika aby było tylko domain.com/settings

Czyli jeśłi dobrze zrozumiałem, to zabezpieczenie muszę wykonać w middleware który będzie sprawdzał czy edytowany użytkownik ma te same id co zalogowany użytkownik ?

Czy może w kontroli umieścić coś takiego:

    if (Auth::user()->id !== $id)
  {
      abort(403);
  }

 

1
komentarz 14 lutego 2019 przez Ehlert Ekspert (212,630 p.)
Ja nie widzę tutaj potrzeby żadnych porównań. Korzystasz z patcha, więc zakładam że robisz api. Wyciągnij usera z metody autoryzacji, z której korzystasz i po zawodach.
1
komentarz 14 lutego 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)

@Greeenone, jeśli w routingu masz zdefiniowane, że dana ścieżka ma mieć id to chyba oczywiste że będzie krzyczał, gdy mu go nie podasz? Zmień routing, aby nie było tam parametru id, przy edycji weź zalogowanego użytkownika i będzie po sprawie.

Dalszą część napisałem jako dodatek. Jeśli chciałbyś to id z jakieś powodu tam zostawić to wtedy zrobiłbym warunek na wzór tego jak podałeś, zapewne w middleware.

Podobne pytania

0 głosów
2 odpowiedzi 454 wizyt
pytanie zadane 3 stycznia 2022 w C# przez KonDZIKs Bywalec (2,770 p.)
0 głosów
2 odpowiedzi 578 wizyt
pytanie zadane 7 września 2019 w PHP przez Saklavi Obywatel (1,240 p.)
0 głosów
1 odpowiedź 158 wizyt
pytanie zadane 23 września 2021 w PHP przez Artek Stary wyjadacz (11,800 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...