SPA приложение токен в куках и csrf

Всё что касается построения API
Ответить
raketa
Сообщения: 131
Зарегистрирован: 2011.07.28, 17:29

SPA приложение токен в куках и csrf

Сообщение raketa » 2019.09.25, 10:40

Интересно мнение кто как делает и какие мыcли по этому поводу.
Допустиv решено хранить api токен в куках с http only и secure как более безопасный способ с точки зрения xss в сравнении с localstorage. В этом случае нужна защита от csrf. Решение в лоб это csrf куки без http only с последующей вставкой в заголовок запроса через javascript
Но так как куки в Yii дополнительно защищены просто использовать их для вставки в запрос не получится, нужен какой то другой способ передачи токена в SPA приложение.
Spa приложение отделено от бэкенда, заранее вставлять токен в мета теги нет возможности.
Какие видите варианты чтобы передать csrf токен?
Один из вариантов не шифровать csrf куки, как я знаю в Yii нет готовой реализации для этого. НЕ специалист по безопасности но кажется шифровать csrf куки нет смысла.

raketa
Сообщения: 131
Зарегистрирован: 2011.07.28, 17:29

Re: SPA приложение токен в куках и csrf

Сообщение raketa » 2019.09.25, 11:24

Решение из laravel

Код: Выделить всё

    protected function getTokenFromRequest($request)
    {
        $token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');
        if (! $token && $header = $request->header('X-XSRF-TOKEN')) {
            $token = $this->encrypter->decrypt($header, static::serialized());
        }
        return $token;
    }
Если есть токен в теле запроса используем его, если есть в хидере X-CSRF-TOKEN используем его,
если же есть X-XSRF-TOKEN то это зашифрованное значение кук, куки в сыром виде, делаем дешифровку.
Не хватает таких вещей в Yii

yiiliveext
Сообщения: 796
Зарегистрирован: 2019.08.13, 01:49

Re: SPA приложение токен в куках и csrf

Сообщение yiiliveext » 2019.09.25, 11:57

Добавляете в заголовок X-CSRF-Token запроса и для проверки используете Yii::$app->request->validateCsrfToken()

raketa
Сообщения: 131
Зарегистрирован: 2011.07.28, 17:29

Re: SPA приложение токен в куках и csrf

Сообщение raketa » 2019.09.25, 12:26

Вопрос не в этом. Чтобы добавить токен в заголовок его надо откуда то взять. ОДин из вариантов брать куки, но если значение куки передавать в заголовке то проверка не пройдет.

yiiliveext
Сообщения: 796
Зарегистрирован: 2019.08.13, 01:49

Re: SPA приложение токен в куках и csrf

Сообщение yiiliveext » 2019.09.25, 12:33

Передаете его в actionLogin и храните в localStorage, передаете в заголовках non-safe запросов.

raketa
Сообщения: 131
Зарегистрирован: 2011.07.28, 17:29

Re: SPA приложение токен в куках и csrf

Сообщение raketa » 2019.09.25, 18:49

есть такой вариант, но нужна будет еще механика своевременного обновления csrf токена

yiiliveext
Сообщения: 796
Зарегистрирован: 2019.08.13, 01:49

Re: SPA приложение токен в куках и csrf

Сообщение yiiliveext » 2019.09.26, 10:55

raketa писал(а):
2019.09.25, 18:49
есть такой вариант, но нужна будет еще механика своевременного обновления csrf токена
Обновляйте в том же actionLogin.

evgeniy123
Сообщения: 401
Зарегистрирован: 2011.11.01, 17:29

Re: SPA приложение токен в куках и csrf

Сообщение evgeniy123 » 2019.12.30, 12:55

А чем jwt +refresh token не подходит и хранение в localStorage?

Ответить