Я пытаюсь создать безопасный метод аутентификации для моего REST API Node.js, который будет работать как для прямых запросов API, так и из моего веб-приложения React.js.Я немного читал о том, как правильно хранить токены аутентификации для защиты от XSS и CSRF, поэтому я хотел бы представить, что я придумаю, чтобы увидеть, есть ли в нем какие-либо дыры или он будет работать наall.
Этот метод будет использовать комбинацию JWT, localstorage (приложение React) и куки (Node API).
API имеет конечную точку /authentication
.При вызове он сгенерирует токен CSRF и включит его в полезную нагрузку JWT.Затем он установит файл cookie (HttpOnly, безопасный) с JWT и вернет JWT.
Когда из моего веб-приложения React.js вызывается /authentication
, он получит JWT, исохраните только токен CSRF в localstorage.
Затем, когда приложению потребуется извлечь ресурс из API, оно будет отправлять токен CSRF в заголовке каждого запроса.
Приложение Node.js будет иметь промежуточное программное обеспечение, которое проверяет несколько вещей:
- Если присутствует весь JWT, оно будет аутентифицироваться.Это тот случай, когда пользователи взаимодействуют с API напрямую.
- Если это просто токен CSRF, мы сначала проверим подпись JWT в файле cookie, а затем сравним полученную CSRF с той, что впеченье.Если они совпадают, то он будет аутентифицироваться.
Я думаю, что таким образом JWT никогда не будет отображаться в веб-приложении для каких-либо атак.
эта модель кажется достаточно безопасной?