Как защита Laravel CSRF защищает себя от атак перезаписи готовить поддомен ie? - PullRequest
1 голос
/ 13 января 2020

Laravel, похоже, использует 2 разных шаблона для CSRF-атак.

Первый: Laravel сохраняет токен в сеансе сервера с именем _token и обновляет его для каждого запроса. Затем поместите {{ csrf_field() }} в форму, чтобы при отправке формы она передавала скрытое входное значение, содержащее токен csrf, обратно на сервер, чтобы проверить, соответствует ли оно значению _token, сохраненному в сеансе. Это шаблон токена синхронизатора.

Но меня беспокоит второе. Laravel использует шаблон Double Submit Cook ie для вызовов AJAX. Laravel хранит повар ie с именем XSRF-TOKEN на стороне клиента вместе с зашифрованным идентификатором session_id cook ie. Клиентское приложение прочитает это XSRF-Token cook ie, чтобы настроить заголовок запроса X-XSRF-TOKEN, и поместит значение cook ie в этот заголовок. Поэтому Laravel будет только проверять, соответствует ли XSRF-Token cook ie значение X-XSRF-TOKEN заголовка запроса или нет.

Это проблема. Почему Laravel не привело к тому, что значение XSRF-Token cook ie и значение заголовка X-XSRF-TOKEN были такими же, как _token в сеансе? Если Laravel слепо доверяет клиенту cook ie и заголовку запроса, что произойдет, если атакуемый владеет поддоменом и перезапишет XSRF-TOKEN cook ie и подделает запрос?

Как Laravel может защитить себя от атаки на поддомене ie, если он использует шаблон Double Submit Cook ie для своего AJAX call?

...