HTTP Basic Authentication — один із найстаріших і найпростіших способів захистити ресурс паролем: браузер запитує логін і пароль, і вони передаються на сервер у складі кожного запиту. Простота цього механізму водночас є і його головною слабкістю.
Як формується заголовок Authorization
Логін і пароль об'єднуються через двокрапку (логін:пароль), після чого весь рядок кодується Base64 і додається в заголовок Authorization: Basic <закодований_рядок>. Браузер автоматично додає цей заголовок до кожного наступного запиту після першої успішної автентифікації.
Чому Base64 — це не безпека
Base64 — це схема кодування, а не шифрування: будь-хто може декодувати рядок назад у вигляд логін:пароль за секунди, без жодного ключа чи пароля. Якщо запит перехопити (наприклад, через незахищене Wi-Fi з'єднання), облікові дані стають миттєво доступні зловмиснику.
Чому HTTPS обов'язковий
Оскільки Base64 не приховує дані криптографічно, безпека Basic Auth повністю залежить від шифрування транспортного рівня — тобто від HTTPS. Без TLS-з'єднання Basic Auth передає облікові дані практично у відкритому вигляді, тож використовувати цей механізм по звичайному HTTP категорично не можна.
Навіщо це потрібно
- Швидко захистити паролем staging-сервер чи внутрішній інструмент на етапі розробки.
- Сформувати правильний заголовок Authorization для тестування API вручну через curl чи Postman.
- Зрозуміти, чому Basic Auth без HTTPS вважається серйозною вразливістю безпеки.
У Basic Auth немає штатного механізму виходу
Браузер кешує облікові дані й автоматично додає заголовок Authorization до кожного наступного запиту на той самий origin, доки вкладку не буде закрито — стандартної кнопки "вийти" протокол не передбачає. Щоб примусово "розлогінити" користувача, сервери йдуть на хитрощі: навмисно повертають 401 із іншим значенням realm або очікують, що користувач сам закриє всі вкладки браузера.