Проверяет понимание способов передачи токена аутентификации в HTTP-запросе и причин выбора заголовка Authorization вместо query-параметров.
Токен аутентификации — это секрет, который подтверждает, что запрос отправлен от имени конкретного пользователя. Главный вопрос не в том, как технически передать строку, а в том, где она может утечь. HTTP-запрос состоит из строки запроса (URL), заголовков и тела, и каждый из этих каналов по-разному логируется и кэшируется промежуточными системами.
Если передать токен как query-параметр, он попадёт в:
Любой, кто получит доступ к этим данным, сможет выдать себя за пользователя.
Спецификация RFC 6750 описывает схему Bearer: клиент отправляет токен в заголовке Authorization с префиксом Bearer. Заголовки не сохраняются в истории и обычно не пишутся в логи в открытом виде.
// Пример запроса с fetch
fetch('/api/profile', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'application/json'
}
});
// Пример с axios
axios.get('/api/profile', {
headers: { Authorization: `Bearer ${accessToken}` }
});
Для SPA токен обычно держат в памяти или в httpOnly-cookie. httpOnly-cookie защищает от XSS, но требует защиты от CSRF. Хранение в localStorage удобно, но уязвимо к XSS, поэтому важно экранировать пользовательский ввод.
Передавайте токен в заголовке Authorization со схемой Bearer — это стандарт, который не оставляет секрет в URL, логах и истории. Такой подход применяется в REST API, микросервисах и мобильных клиентах, где важна безопасность и совместимость с готовыми библиотеками.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию