CSRF относится к атакам подделки сайтов на веб-приложения. CSRF-атаки — это неавторизованные действия, которые выполняют аутентифицированные пользователи системы. Таким образом, многие веб-приложения подвержены этим атакам.
Laravel предлагает защиту от CSRF следующим образом —
Laravel включает встроенный плагин CSRF, который генерирует токены для каждого активного сеанса пользователя. Эти токены проверяют, что операции или запросы отправлены соответствующим аутентифицированным пользователем.
Реализация
Реализация защиты от CSRF в Laravel подробно обсуждается в этом разделе. Следующие пункты примечательны, прежде чем продолжить защиту CSRF —
- 
CSRF реализован в HTML-формах, объявленных внутри веб-приложений. Вы должны включить скрытый проверенный токен CSRF в форму, чтобы промежуточное программное обеспечение защиты от CSRF в Laravel могло проверить запрос. Синтаксис показан ниже — 
CSRF реализован в HTML-формах, объявленных внутри веб-приложений. Вы должны включить скрытый проверенный токен CSRF в форму, чтобы промежуточное программное обеспечение защиты от CSRF в Laravel могло проверить запрос. Синтаксис показан ниже —
<form method = "POST" action="/profile">
   {{ csrf_field() }}
   ...
</form>
- 
Вы можете удобно создавать приложения, управляемые JavaScript, используя HTTP-библиотеку JavaScript, так как она включает в себя токен CSRF для каждого исходящего запроса. 
- 
Файл, а именно resources / assets / js / bootstrap.js, регистрирует все токены для приложений Laravel и содержит метатег, в котором хранится токен csrf с HTTP-библиотекой Axios . 
Вы можете удобно создавать приложения, управляемые JavaScript, используя HTTP-библиотеку JavaScript, так как она включает в себя токен CSRF для каждого исходящего запроса.
Файл, а именно resources / assets / js / bootstrap.js, регистрирует все токены для приложений Laravel и содержит метатег, в котором хранится токен csrf с HTTP-библиотекой Axios .
Форма без токена CSRF
Рассмотрим следующие строки кода. Они показывают форму, которая принимает два параметра в качестве входных данных: электронную почту и сообщение .
<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>
Результатом вышеприведенного кода является показанная ниже форма, которую конечный пользователь может просмотреть —
Форма, показанная выше, примет любую входную информацию от авторизованного пользователя. Это может сделать веб-приложение подверженным различным атакам.
Обратите внимание, что кнопка отправки включает функции в разделе контроллера. Функция postContact используется в контроллерах для связанных представлений. Это показано ниже —
public function postContact(Request $request) {
   return $request-> all();
}
Обратите внимание, что форма не содержит никаких токенов CSRF, поэтому конфиденциальная информация, передаваемая в качестве входных параметров, подвержена различным атакам.
Форма с токеном CSRF
В следующих строках кода показана форма, перепроектированная с использованием токенов 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>
Полученный результат вернет JSON с токеном, как показано ниже —
{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "contact@coderlessons.com"
}
Это токен CSRF, созданный при нажатии кнопки отправки.
