Можно ли использовать ТОЛЬКО токены (CSRF) для аутентификации?

Недавно я узнал, что файлы cookie отправляются автоматически при каждом запросе. Такое поведение делает некоторые веб-сайты уязвимыми для CSRF. Насколько я узнал, CSRF можно предотвратить, используя токены CSRF, которые хранятся в клиентском JavaScript или API-интерфейсах хранилища, но НЕ в файлах cookie (чтобы предотвратить их отправку).

Мой вопрос: если бы у меня был файл cookie аутентификации и токен CSRF, почему бы просто не использовать токены вместо файлов cookie? Почему бы не полагаться только на токены, которые не хранятся в файлах cookie?

Могу ли я удалить аутентификацию cookie из своего приложения и позволить клиенту просто отправлять токен в заголовках или что-то в этом роде (возможно X-Authentication-Token).

Я думаю, что у этого подхода есть много преимуществ, например, отсутствие необходимости хранить и управлять двумя UUID в базе данных, а также отсутствие необходимости отправлять токен CSRF в теле. Что вы думаете?

Для близких избирателей: ОП может меня здесь поправить, но я думаю, что ОП не ищет мнений/советов, а скорее спрашивает, небезопасна ли эта практика.

Michael M. 06.06.2024 05:07

Да, я не прошу мнений, я просто хочу знать, хорошая это практика или нет. Потому что в большинстве руководств YouTube об этом не упоминается, а вместо этого используется скрытое поле формы.

Omar Ahmed 06.06.2024 05:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать токен аутентификации и не помещать его в заголовок файла cookie. Логичное место — заголовок Authorization. Это больше не токен CSRF, но он, безусловно, является хорошей аутентификацией и часто используется различными API.

Есть некоторые компромиссы в области безопасности. Одним из преимуществ использования файла cookie является то, что вы можете пометить его как «HTTPOnly», что делает его невидимым для Javascript.

Обычно я бы рекомендовал взглянуть на такой стандарт, как OAuth2, вместо того, чтобы делать что-то с нуля самостоятельно.

Другие вопросы по теме