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

Zabezpieczenie formularza - Laravel

–1 głos
93 wizyt
pytanie zadane 13 lutego w PHP, Symfony, Zend przez Greeenone Dyskutant (9,440 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 przez Arkadiusz Waluk Ekspert (242,700 p.)
wybrane 14 lutego 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 przez Greeenone Dyskutant (9,440 p.)
edycja 14 lutego 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 przez Ehlert Mędrzec (154,350 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 przez Arkadiusz Waluk Ekspert (242,700 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
0 odpowiedzi 26 wizyt
0 głosów
2 odpowiedzi 120 wizyt
pytanie zadane 9 października 2017 w PHP, Symfony, Zend przez Maciejunio Nowicjusz (140 p.)
0 głosów
1 odpowiedź 126 wizyt
pytanie zadane 6 października 2017 w PHP, Symfony, Zend przez Adrian1999 Nałogowiec (32,990 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

61,379 zapytań

107,321 odpowiedzi

223,528 komentarzy

33,125 pasjonatów

Przeglądających: 316
Pasjonatów: 13 Gości: 303

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...