кодесурса
«Laravel

Laravel (5,7) CSRF Защита

script1adsense2code
script1adsense3code

Вступление

CSRF относится к атакам подделки межсайтовых запросов на веб-приложения. CSRF-атаки - это неавторизованные действия, которые выполняют аутентифицированные пользователи системы. Таким образом, многие веб-приложения подвержены этим атакам.

Laravel предлагает защиту от CSRF следующим образом -

Laravel включает встроенный плагин CSRF, который генерирует токены для каждого активного сеанса пользователя. Эти токены проверяют, что операции или запросы отправлены соответствующим аутентифицированным пользователем.

Реализация

Реализация защиты от CSRF в Laravel подробно обсуждается в этом разделе. Следующие пункты примечательны, прежде чем продолжить защиту CSRF -

  • 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 .

CSRF токены и JavaScript

При создании приложений на основе JavaScript удобно, чтобы ваша HTTP-библиотека JavaScript автоматически прикрепляла токен CSRF к каждому исходящему запросу. По умолчанию файл resources / js / bootstrap.js регистрирует значение метатега csrf-token в 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": "[email protected]"
}

Это токен CSRF, созданный при нажатии кнопки отправки.

Предыдущая: Laravel (5.7) Middleware
Следующая: Контроллеры Laravel (5.7)

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code