Laravel (5,7) CSRF Защита
Вступление
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 программирования