Devloger

Co to jest CSRF? Jak to działa? | Laravel

Co to jest CSRF? | Laravel

Ochrona CSRF

Dzisiaj odpowiem na to pytanie Emotikon uśmiechniętej buźki. Pojawia się ono relatywnie często. A ja wyjaśnię ci to jak najlepiej i rozwieję wszelkie wątpliwości Emotikon uśmiechniętej buźki.

Co to jest?

CSRF (Cross-site request forgery) – jest to metoda ataku na serwis internetowy polegająca na spreparowaniu żądania poprzez wykorzystanie uprawnień ofiary - głównie sesji - do wykonania jakiekolwiek szkodliwej i niezamierzonej przez ofiarę operacji. Lecz nie tyczy się to tylko protokołu HTTP, ponieważ dotyczy on również FTP.

Może brzmieć zawile, lecz to całkiem proste Emotikon uśmiechniętej buźki. Głównie chodzi tutaj o problem związany z autoryzacją działań, które wbrew twojej woli i wiedzy przy pomocy tego ataku mogą zostać uskutecznione.

Wyobraź sobie że jesteś zalogowany na jakiejś stronie, a na zupełnie innej wypełniasz jakiś formularz. Formularz ten może być wykorzystany do właśnie tego typu ataku. Albowiem może on wykonać żądanie do uprzednio wspomnianej strony które wyjdzie od ciebie – czyli wykona jakieś działanie z wykorzystaniem twoich uprawnień (jeśli takowe istnieją) bez twojej wiedzy i zgody.

To tylko przykład w jaki sposób można przeprowadzić ten atak Emotikon uśmiechniętej buźki. Tylko nie myl go z atakiem typu XSS! Ponieważ są to zupełnie odrębne metody ataku, które są bardzo często mylone bądź niepoprawnie używane zamiennie.

Co ma z tym wspólnego Laravel?

Otóż ma i to dużo Emotikon uśmiechniętej buźki. Ponieważ Laravel gwarantuje ci bezbłędne zabezpieczenie przed tego typu atakami, które jest również bardzo łatwe i szybkie w użyciu a większość pracy którą normalnie musiałbyś poświęcić na obsłużenie tego czy zaprogramowanie dzieję się za sceną, nie musisz się tym przejmować ani o to martwić Emotikon uśmiechniętej buźki!

Jak to działa?

Otóż Laravel przechowuje w sesji użytkownika 40-znakowy token, który przy każdym żądaniu jest weryfikowany. Jeśli token umieszczony w żądaniu klienta nie zgadza się z tokenem przypisanym do jego sesji – żądanie zostaje odrzucone z wyrzuceniem wyjątku niezgodności CSRF. Bardzo proste działanie, a jakże piękna i kompleksowa ochrona przed atakiem CSRF Emotikon uśmiechniętej buźki.

Czy muszę coś zrobić bądź skonfigurować by to działało?

Nie Emotikon uśmiechniętej buźki. Absolutnie nie. Jedynie tworząc formularze musisz pamiętać o dołączeniu do nich tokenu. W zasadzie możesz to zrobić na dwa sposoby. Możesz je dołączyć jako nagłówek „X-CSRF-TOKEN” do żądania bądź dołączyć go jako wartość dla wejścia (input value) pod nazwą „_token” – zalecam tę drugą opcję Emotikon uśmiechniętej buźki.

I to wszystko, nic więcej nie musisz robić, Laravel zajmie się resztą dla ciebie Emotikon uśmiechniętej buźki!

Wyjątki

Masz również możliwość wyłączenia konkretnych adresów URL spod jarzma weryfikacji przeciw atakom CSRF poprzez dodanie ich do właściwości „$except” w middleware pod nazwą „VerifyCsrfToken”. Jest to szczególnie przydatne choćby w sytuacji gdy korzystasz z jakiegoś Api Emotikon uśmiechniętej buźki.

Wykorzystanie na podstawie ciasteczek

Również masz możliwość zawrzeć w żądaniu owy token pobierając go z ciasteczek. Ponieważ Laravel przechowuje token dla każdej odpowiedzi w ciasteczku o nazwie „XSRF-TOKEN” Emotikon uśmiechniętej buźki.

Rozwiązanie stosowane głównie dla wygody, ponieważ niektóre frameworki oraz biblioteki języka javascript jak Angular czy Axios automatycznie umieszczą wartość tego ciasteczka w nagłówku „X-XSRF-TOKEN”.

I to byłoby wszystko w temacie protekcji przeciw CSRF w Laravelu Emotikon uśmiechniętej buźki.

Dziękuję ci za lekturę tego artykułu i życzę ci dobrego dnia i owocnego kodowania Emotikon uśmiechniętej buźki.

Bywaj!

Krystian Bogucki

Podobał Ci się ten artykuł?

Jeśli tak, to zarejestruj się aby otrzymywać powiadomienia o nowych artykułach. Nie ujawnię nikomu Twojego adresu!

1 komentarzy... przeczytaj komentarze albo dodaj nowy komentarz


Agafraz

2018-02-15

Fajny wpis. Myślę że ten atak jest mylony z XSS bo często się go właśnie z nim wykorzystuje. Kiedyś CSRF wykorzystywany był głównie jako spreparowany link wysyłający jakieś dane GETEM do niezabezpieczanego skryptu i wywołanie tym samym jakiejś akcji w imieniu osoby. Jednak za pomocą podatności XSS możemy osadzić skrypt JS/JQUERY/DOWOLNY frontendowy i... wywoływać AJAXEM zapytania typu POST/inne w imieniu osoby, która odwiedzi witrynę z osadzonym kodem za pomocą XSS. Dlatego pewnie XSS jest z nim mylony i kojarzony. Polecam zobaczyć fragment z mojego darmowego kursu prawie 30 lekcyjnego na ten temat na YouTube: https://youtu.be/ILyKmkKfkus?t=1164