Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]prosze o wytlumaczenie csrf protection w symfony
Forum PHP.pl > Forum > PHP > Frameworki
nieraczek
Czytałem o ochronie przed atakami csrf, ale nie bardzo rozumiem jak wygląda ta ochrona w symfony. W formularzach to podobno dodaje ukryte pole z wartością z pliku settings.yml z 'csrf_secret: wyrazenie' a w link_to() wartosc wyrazenia na koncu linka.

To znaczy jak mamy csrf_secret: WYRAZENIE
i na stronie formularz do dodawania komentarza i użytkownik wpisze w tym formularzu: (tutaj powinny być tagi [img] a nie [image], ale nie można tongue.gif) [image]http://strona.com/delete.php?id=1[/image] to zamiast
http://strona.com/delete.php?id=1 będzie http://strona.com/delete.php?id=1WYRAZENIE czy jak ? Czy w ogóle w takim wypadku nie doda nic na końcu linka tylko doda ukryte pole z wartoscia WYRAZENIE, ale jak wtedy ma wyglada ochrona ? Nie rozumiem....
Berg
Symfony nie dokleja kodu zabezpieczającego do wszystkich linków które przewijają się przez framework bo i po co. Chodzi o zabezpieczenie krytycznych operacji jak np. kasowanie artykułów.
Załóżmy, że atakujący stronę wyśle obrazek którego url będzie wskazywał na artykuly/delete/4. Jeśli stronę z spreparowanym obrazkiem będą przeglądać normalni użytkownicy bez odpowiednich uprawnień to nic się nie stanie. Jeśli natomiast na stronę gdzie znajduje się taki obrazek wejdzie administrator to w takim przypadku przeglądarka będzie starała się go załadować wczytując podany w src adres. A jako, że stronę będzie odczytywać użytkownik z uprawnieniami administratora to nastąpi wykonanie akcji kasowania artykułu o numerze id 4.
Obrona przez CSRF polega na tym, że na stronie poprzedzającą krytyczną operację (np. w liście artykułów) generuje się odpowiedni kod zabezpieczający zapisywany do sesji/ciasteczka. Przy wybraniu operacji usunięcia taki kod jest doklejany do urla i walidowany przy próbie kasowania obrazka. Jeśli adres do usunięcia artykułu zostanie wywołany bezpośrednio bez podania odpowiedniego kodu to zostanie wyrzucony błąd zabezpieczeń.
Możliwe, że zainteresuje Ciebie wątek na forum google.
nieraczek
dzięki - te krytyczne operacje to jak znalazłem w przypadku uzycia linka - link_to():
-delete - usuwanie z bazy danych
-put - jak rozumiem to chyba wstawianie do bazy danych, mogliby nazwać insert.... winksmiley.jpg
-post - wysyłanie danych metodą post, to chyba jak przesyła się dane do funkcji javascript, a ta metodą post do funkcji php - czyli ajax
michalg
Cytat(Berg @ 11.04.2009, 19:30:28 ) *
Przy wybraniu operacji usunięcia taki kod jest doklejany do urla i walidowany przy próbie kasowania obrazka. Jeśli adres do usunięcia artykułu zostanie wywołany bezpośrednio bez podania odpowiedniego kodu to zostanie wyrzucony błąd zabezpieczeń.


A dokładnie, to tworzony jest formularz za pomocą javascriptu, który jest wysyłany postem.

Cytat(nieraczek @ 12.04.2009, 10:38:52 ) *
-put - jak rozumiem to chyba wstawianie do bazy danych, mogliby nazwać insert.... winksmiley.jpg


W symfony PUT używany jest do aktualizowania rekordów w bazie, do wstawiania służy POST. Przynajmiej tak generowany jest domyślny zestaw routingów przez sfRouteCollection, na wzór architektury rest:
http://en.wikipedia.org/wiki/Restful
nieraczek
Ooo dziękuję - pierwszy raz się z tym spotykam. smile.gif PUT w Symfony służy tylko do update ? Bo w tej tabelce na podanej przez Ciebie stronie napisano też o create ?
michalg
Cytat(nieraczek @ 14.04.2009, 21:35:24 ) *
Ooo dziękuję - pierwszy raz się z tym spotykam. smile.gif PUT w Symfony służy tylko do update ? Bo w tej tabelce na podanej przez Ciebie stronie napisano też o create ?


Tak, ale możesz tak skonfigurować routing, żeby użyć PUT do create. Albo inaczej - do wszystkiego użyć POST.
jupeter
Stary topic - ale może trochę pomoże dla poszukujących w historii:

Trochę o włączaniu w symfony zabezpieczenia CSRF:
http://www.symfony.pl/2009/10/dobra-prakty...awsze-wlaczone/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.