Запросы API Laravel с токеном CSRF - PullRequest
0 голосов
/ 05 февраля 2019

Я создаю сайт с использованием фреймворка Laravel, где я использую jQuery вместо Vue.И мне интересно, какой подход лучше использовать при безопасном выполнении почтовых запросов, когда вы уже вошли в систему.

В настоящее время я использую стандартную аутентификацию Laravel и веб / маршруты для отображения правильных представлений при входе в систему.

А теперь для более удобного взаимодействия с пользователем я хочу использовать запросы JQuery POST вместо отправки формы, чтобы я мог получить JSON и внести необходимые изменения без перезагрузки веб-сайта.

Имею некоторый опыт работы с JWT и OAuth2, нодействительно ли это необходимо в этом случае?

Нашел этот поток: https://stackoverflow.com/a/44106621/2906013, который объясняет, что отправлять CSRF-токен в заголовок POST-запроса - плохая практика, поскольку REST API не сохраняют состояния.Но это состояние уже установлено, когда пользователь вошел в систему, поэтому я не понимаю, какой вред это может нанести в моем случае?

Чем это отличается от токена JWT?Они оба являются токенами, представляющими вошедшего в систему пользователя, или я ошибаюсь (токен CSRF является токеном сеанса в Laravel, если я не ошибаюсь)?

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

1 Ответ

0 голосов
/ 05 февраля 2019

По моему личному мнению, это зависит от того, как вы классифицируете свой запрос ajax и структуру проекта в целом.Ваш проект полностью расслаблен?Как и все запросы должны быть RESTful и нет логина напрямую?В этом случае ваше приложение не имеет состояния и каждый запрос будет нуждаться в какой-либо аутентификации, которая не будет идеальным способом для csrf_token.

Например, если вы используете сторонний API, вы фактически никогда не входите в систему, новы используете токены JWT или OAUTH, чтобы удостовериться, что ваш запрос аутентифицирован.

Теперь в вашем случае, если у вас весь веб-сайт в основном следует стратегии перенаправления без перерывов и поддерживает сеанс, тогда он является состоянием.Сеанс - это то, что поддерживает его состояние.Таким образом, для простого сохранения формы, если вы хотите использовать ajax вместо обновления страницы, отправка csrf_token была бы полностью правильной.через обновление-представить или AJAX.Так что в идеале ничего не меняется, просто вы вернете json вместо перенаправления и обработаете его в javascript.

Безопасность этого будет зависеть от того, насколько правильно вы подтвердите свой запрос на публикацию в контроллере, как вы убедитесь, что недействительные данныене отправляется на сервер и т. д.

...