Laravel - Ochrona CSRF
CSRF odnosi się do ataków Cross Site Forgery na aplikacje internetowe. Ataki CSRF to nieautoryzowane działania, które wykonują uwierzytelnieni użytkownicy systemu. W związku z tym wiele aplikacji internetowych jest podatnych na takie ataki.
Laravel oferuje ochronę CSRF w następujący sposób -
Laravel zawiera wbudowaną wtyczkę CSRF, która generuje tokeny dla każdej aktywnej sesji użytkownika. Te tokeny sprawdzają, czy operacje lub żądania są wysyłane przez odpowiedniego uwierzytelnionego użytkownika.
Realizacja
Implementacja ochrony CSRF w Laravel jest szczegółowo omówiona w tej sekcji. Poniższe punkty są warte uwagi, zanim przejdziemy dalej w zakresie ochrony CSRF -
CSRF jest implementowany w formularzach HTML zadeklarowanych w aplikacjach internetowych. Musisz dołączyć ukryty zweryfikowany token CSRF do formularza, aby oprogramowanie pośredniczące ochrony CSRF Laravel mogło zweryfikować żądanie. Składnia jest pokazana poniżej -
<form method = "POST" action="/profile">
{{ csrf_field() }}
...
</form>
Możesz wygodnie budować aplikacje oparte na JavaScript, używając biblioteki JavaScript HTTP, ponieważ obejmuje to token CSRF do każdego wychodzącego żądania.
Plik a mianowicie resources/assets/js/bootstrap.js rejestruje wszystkie tokeny dla aplikacji Laravel i zawiera meta tag, który przechowuje csrf-token z Axios HTTP library.
Formularz bez tokena CSRF
Rozważ następujące wiersze kodu. Pokazują formularz, który przyjmuje dwa parametry jako dane wejściowe:email i message.
<form>
<label> Email </label>
<input type = "text" name = "email"/>
<br/>
<label> Message </label> <input type="text" name = "message"/>
<input type = ”submit” name = ”submitButton” value = ”submit”>
</form>
Wynikiem powyższego kodu jest pokazany poniżej formularz, na którym użytkownik końcowy może przeglądać -
Formularz pokazany powyżej akceptuje wszelkie informacje wejściowe od autoryzowanego użytkownika. Może to spowodować, że aplikacja internetowa będzie podatna na różne ataki.
Należy pamiętać, że przycisk przesyłania zawiera funkcje w sekcji kontrolera. PlikpostContactfunkcja jest używana w kontrolerach dla powiązanych widoków. Jest to pokazane poniżej -
public function postContact(Request $request) {
return $request-> all();
}
Zwróć uwagę, że formularz nie zawiera żadnych tokenów CSRF, więc poufne informacje udostępniane jako parametry wejściowe są podatne na różne ataki.
Formularz z tokenem CSRF
Poniższe wiersze kodu pokazują formularz ponownie zaprojektowany przy użyciu tokenów CSRF -
<form method = ”post” >
{{ csrf_field() }}
<label> Email </label>
<input type = "text" name = "email"/>
<br/>
<label> Message </label>
<input type = "text" name = "message"/>
<input type = ”submit” name = ”submitButton” value = ”submit”>
</form>
Uzyskane dane wyjściowe zwróci JSON z tokenem, jak podano poniżej -
{
"token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
"name": "TutorialsPoint",
"email": "[email protected]"
}
To jest token CSRF utworzony po kliknięciu przycisku Prześlij.