{{TOC}} {{DOCVER 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51}} == Введение == Laravel позволяет легко защитить ваше приложение от атак с ((https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0 подделкой межсайтовых запросов)) (CSRF). Подделка межсайтовых запросов - тип атаки на сайты, при котором несанкционированные команды выполняются от имени аутентифицированного пользователя. Laravel автоматически генерирует CSRF-"токен" для каждой активной пользовательской сессии в приложении. Этот токен используется для проверки того, что именно авторизованный пользователь делает запрос в приложение. При определении каждой HTML-формы вы должны включать в неё скрытое поле CSRF-токена, чтобы посредник CSRF-защиты мог проверить запрос. Вы можете использовать вспомогательную функцию %%csrf_field()%% для генерирования поля токена: %%
{{ csrf_field() }} ...
%% ((//docs/v5/middleware Посредник)) %%VerifyCsrfToken%%, входящий в группу посредников %%(t)web%%, автоматически проверяет совпадение токена в данных запроса с токеном, хранящимся в сессии. == Исключение URI из CSRF-защиты == Иногда бывает необходимо исключить набор URI из-под CSRF-защиты. Например, если вы используете ((https://stripe.com Stripe)) для обработки платежей и применяете их систему веб-хуков (//hook//), то вам надо исключить маршрут вашего обработчика веб-хуков Stripe из-под CSRF-защиты, так как Stripe не будет знать, какой CSRF-токен надо послать в ваш маршрут. Обычно такие маршруты помещаются вне группы посредников %%(t)web%%, которую %%RouteServiceProvider%% применяет ко всем маршрутам в файле %%(t)routes/web.php%%. Но вы также можете исключить маршруты, добавив их URI в свойство %%$except%% посредника %%VerifyCsrfToken%%: %% %% После создания тега %%(t)meta%% вы можете указать библиотеке, такой как jQuery, автоматически добавлять токен в заголовки всех запросов. Это обеспечивает простую, удобную CSRF-защиту для ваших приложений на базе AJAX: %% $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); %% == X-XSRF-TOKEN == Laravel хранит текущий CSRF-токен в cookie %%(t)XSRF-TOKEN%%, которую включается в каждый отклик, генерируемый фреймворком. Вы можете использовать значение cookie, чтобы задать заголовок запроса %%(t)X-XSRF-TOKEN%%. Этот cookie в основном посылается для удобства, потому что некоторые JavaScript-фреймворки, такие как Angular, автоматически помещают его значение в заголовок %%(t)X-XSRF-TOKEN%%.