Українська

Розробники · Base64 енкодер & decoder

Як HTTP Базовий автентифікаційний заголовок та декодований Base64

· Як працює

Опубліковано ToolAcre · Редакція журналу

бази64 безпека

HTTP Basic auth header з ім'ям користувача:password Base64 кодований
Головна ToolAcre векторна ілюстрація

Авторизація: Базовий заголовок просто ім'я користувача:password run через Base64. Цей пост показує, як побудовано значення, як декодувати один з запиту журналу, і чому кодування приховує нічого.

Про нас 401 that persists хоча облікові дані є правою — значення заголовка, яка decodes to subtly false string

Анжела HTTP API повернення 401 Несанкціонований і очікує авторизації: Basic header. Значення є словом Схема Basic, один простір, і рядок Base64. Відсутній префікс, зашифрований префікс, або неочікуваний новий сервер, який отримує навіть при виявленні імені користувача та пароля.

Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації. Ім'я користувача:password UTF-8 закодовано потім Base64 закодовано, виробляючи значення заголовка. Якщо облікові дані адміністратора:s3cret, UTF-8 байтів 0x61 0x64 0x6D 0x69 0x6E 0x3A 0x73 0x33 0x63 0x72 0x65 0x74ASCII Теги плюс колонка), кодування Base64 виробляє YWRtaW46czNjcmV0, і заголовок авторизації: Basic YWRtaW46czNjcmV0.

Рецепт від RFC 7617: 'user:pass', UTF-8, Base64 — точний крок і роль товстої кишки

Це повний HTTP Базова схема автентифікації, визначена в RFC 7617. Він простий, стандартизований, і пропонує без безпеки самостійно: будь-який головок читання може негайно скасувати його для читання пароля. Саме тому HTTPS є обов'язковою для базового юта. Кондиціонер - це транспортна вимога, не функція безпеки. Пароль подорожі як UTF-8 байти, як і будь-які інші дані; Base64 просто позначення, що використовуються в HTTP протокол.

Якщо потрібно декодувати Basic header з мережевого журналу, процес прямопередбачуваний: смуга Basic, Base64 decode залишається, і у вас є ім'я користувача:password. Колонка глухий між ім'ям користувача та паролем. RFC 7617 Специфікує облікові дані є користувачем : пароля, а перша товста - роздільник. Якщо пароль містить товсту кишку, другу колону є ще одним символом в паролі. Колонка є структурною, оскільки приймач потребує одного однозначного кордону. Пошук першої колонки після декодування; все перед тим, як він ідентифікує користувача і все після нього є паролем. Відсутня товста кишка, отже, вказується неоднорідна кримінальна пара, не проблема Base64-alphabet.

Призначений приклад: кодування адміністратора:s3cret і декодування заголовка з колоди — обидва напрямки, в тому числі причіпно-нової помилки

Якщо ім'я користувача є адміністратором та паролем: слово, облікові дані адміністратора:pass:word, яка кодує YWRtaW46cGFzczp3b3Jk. При декодуванні його необхідно розбити тільки на першому колонці, надаючи ім'я адміністратора та пароль: слово. Розщеплення на кожній колонці невірно розбити пароль. Параметри charset в RFC 7617 Цілі держави є UTF-8 кодування. Це засіб не-ASCII символи в імені користувача або паролі перетворюються на UTF-8 байти перед кодуванням Base64.

Якщо ім'я користувача є кафе (розміщений e), UTF-8 байти 0x63 0x61 0x66 0xC3 0xA9 (чотири байтів для ASCII літери плюс два для акцентованого персонажа, і повних облікових записів кафе:пароль має байти для кафе, потім колонкабайт 0x3A, потім пароль. Base64 вихід кодує всі байти вірно. Decoder повинен знати для інтерпретації декодованих байтів як UTF-8 текст, не латинсько-1.

Пароль, що містить колони, пробіли та не-ASCII — чому перша колонка розщеплюється, і який параметр charset для

Приклад роботи: початок з admin:s3cret. Перетворення в UTF-8 байти: a=0x61, d=0x64, m=0x6D, i=0x69, n=0x6E, :=0x3A, s=0x73, 3=0x33, c=0x63, r=0x72, e=0x65, т=0x74. У десяткові: (97, 100, 109, 105, 110, 58, 115, 51, 99, 114, 101, 116). Base64 кодувати ці 12 bytes: група в чотири групи трьох (виробляти чотири групи чотирьох символів Base64).

Закодовано значення YWRtaW46czNjcmV0. Авторизація заголовка - Авторизація: Basic YWRtaW46czNjcmV0. Паралельна сторона може містити ще одну колону без переїзду. Простір і не-ASCII Текст також вижити, коли обидві сторони згодні на текстовому кодуванні. ToolAcre може перевірити UTF-8 байти він випромінює, але більший сервер, який очікує на інший charset, залишається проблемою взаємопроникності за межами перетворення Base64.

Чому це не захищено TLS — декодування показує пароль кожному, хто бачить заголовок

Для декодування отримано заголовок, смуга Basic, Base64 decode YWRtaW46czNjcmV0, щоб отримати байти назад, інтерпретувати як UTF-8 текст для отримання адміністратора: s3cret, розбити на першій колонці, щоб витягти ім'я користувача та пароль. Від луні допускаються загальні помилки. Якщо запустити echo admin:s3cret base64 в Unix оболонці, echo додає нову лінію за замовчуванням, тому код адміністратора:s3cret з новоюлінією (13 bytes до 12).

Base64 вихід відрізняється: YWRtaW46czNjcmV0Cg== (набивні та додаткові символи). Заголовок авторизації з цим значенням не буде, тому що пароль містить новий характер. Виправлення використання ехо -n або труба через принтер або інструмент, який не додає нових ліній. Base64 encoder & decoder дозволяє уникнути цього: кодує точно те, що ви вставляєте, не приховані нові лінії. TLS зміни транспортної загрози, а не умовного формату. Всередині захищеного з'єднання зашифрований за допомогою решти запиту; один раз журнали програмного забезпечення або відображає його, значення Base64 знову призупиняє багаторазове значення для всіх, хто може його зашифрувати. Redaction все ще має значення в кожній точці спостереження.

Загальні помилки — нова лінія від echo, відсутній «Базовий» префікс, і подвійний кодування значення

Ще одна помилка відсутній Базовий префікс. Заголовок авторизації не діє Base64 окремо, це назва схеми (Basic або Bearer або інші) після того, як простір, а потім критично. Деякі системи не можуть розпізнати YWRtaW46czNjcmV0 як достовірність, але досягається з Basic YWRtaW46czNjcmV0. Якщо ви відмовляєтеся 401, перевірте, чи правильно заголовок авторизації.

Схема – випадковий HTTP стандартні, але багато впровадження є випадковими; перевірка API документація. Двостороння обробка є іншим режимом збою. Якщо base64 кодувати рядок, який вже Base64 закодовано, вихід інший рядок. Encoding YWRtaW46czNjcmV0 виробляє WVdkbWFXNDZjek5qY3JldA= (вічно різні). Деякі системи можуть випадково застосувати кодування двічі: один раз під час основного налаштування і знову при будівництві. Цей сайт використовує файли cookie, щоб надати вам кращий веб-сайт. Продовжуючи користуватися нашим веб-сайтом, ви погоджуєтеся з використанням файлів cookie. Одержаний заголовок очищається від пароля за допомогою додаткового байту, що виробляє 401 що виглядає як збій автентифікації сервера.

Що це не кришка — Дайджест і підшипники, а також ключові підказки браузера

Decoder очікує одного шару Base64, тому подвійне проникнення викликає невідповідність. Саме тому залогові значення в базовій формі Base64 (не простою) можна заплутати: якщо хтось застосовує декодування один раз, вони дивляться ім'я користувача і пароль; якщо застосувати двічі, то вони дивляться обфускацію. автентифікації ДайджестуRFC 7616) і автентифікації ведмедя (для жетонів OAuth) використовують різні схеми, кожен з різними стандартними форматами.

Дайджест вимагає сервера для відправки неце, клієнту для складання хешу і заголовка, щоб включити хеш плюс ім'я користувача, не пароль. Підшипник зазвичай JSON Веб токениJWT), який є Base64url кодований, але не префіксований на ім'я користувача. Базова аута проста, ніж як і повністю нерозголошення без TLS тому, що дані прочитаються в заголовку. Дайджест і ведмедик використовують те ж поле для заголовка авторизації, але повністю відрізняє значення їх значення. У браузері облікові підказки додайте користувацький інтерфейс та кешування поведінку на вершині Basic. Ця стаття зупиняється на побудові та перевірці базового значення навантаження, а не у порівнянні з цими системами автентифікації.

Takeaway: Basic auth is Base64, не захист — як Base64 encoder & decoder дозволяє перевірити значення заголовка локально без надсилання облікового запису в будь-якій точці

Якщо API підтримує декілька схем автентифікації, оберіть найбільш безпечний доступ. Base64 encoder & decoder може допомогти debug Basic auth недостатність: вставити критичний рядок (ім'я користувача і колона і пароль), і інструмент виробляє базове значення відразу. Порівняти результат відправки заголовка, і невідповідність видно. Переконайтесь, вставте значення заголовка з мережевого колоди, смуга Basic prefix, декодування, щоб побачити яку пилку сервера.

Для навчання, вставте адмін:s3cret і дотримуйтесь виходу, після чого змініть пароль, щоб побачити, як змінився Base64. Розуміння того, як заголовок будував чіткість, чому декодування вимагає знати RFC формат і чому колона є структурним елементом, не Base64. Місцева перевірка повинна використовувати винайдену кримінал, а не захищений паролем від виробництва. Закодувати пару, перемістити вихід назад в вхідну панель, і декодувати її. Узгоджуючи пунктуацію та точні причепи символи доводять уявлення про круглу смугу перед заголовком.