Стаття
Кодуйте та декодуйте дані приватно
Розробники щодня вставляють токени, корисне навантаження та облікові дані на сторінки кодування й декодування. Найзручніші з них працюють на сервері, а отже, ваші дані залишають пристрій заради завдання, яке цього ніколи не вимагало. Ці чотири інструменти працюють повністю у браузері, тож дані лишаються у вас.
Base64: виглядає заплутано, але це не таємниця
Base64 є кодуванням, а не шифруванням. Воно перетворює двійкові дані на текст, здатний пережити копіювання та вставлення або проходження крізь системи, що працюють лише з простими символами. Будь-хто, хто бачить рядок Base64, може в один крок декодувати його назад до оригіналу, тож рядок із ключем API, приватним сертифікатом або тілом листа повністю читабельний для того, хто його тримає. Небезпека в тому, що це значення часто ховається у файлах конфігурації, data URL чи заголовках автентифікації й виглядає незрозуміло, що спонукає вставити його у перший-ліпший онлайн-декодер. Той декодер отримує необроблений секрет. Інструмент, який декодує Base64 локально, показує вам вихідні байти, а значення при цьому ніколи не потрапляє на сервер.

Кодування URL: рядки запиту несуть більше, ніж ви думаєте
Відсоткове кодування дозволяє безпечно вставити в URL пробіли, діакритику та зарезервовані символи. Текст, який ви кодуєте чи декодуєте, часто є справжнім рядком запиту з застосунку, а такі рядки несуть ідентифікатори сесії, пошукові запити, адреси електронної пошти, цілі перенаправлення й іноді підписані параметри. Вставлення повного URL у віддалений кодувальник передає все це третій стороні за раз, а рядки запиту становлять саме той вид значень, який потрапляє до серверних журналів. Кодувати й декодувати у браузері означає, що URL обробляється у памʼяті на вашому власному пристрої і ніколи не передається, поки ви з ним працюєте.
JWT: корисне навантаження підписане, а не приховане
JSON Web Token складається з трьох розділів Base64url, зʼєднаних крапками: заголовка, корисного навантаження та підпису. Підпис доводить, що токен не змінювали, але жодним чином не приховує корисне навантаження, яке декодується у читабельний JSON з ідентифікаторами користувача, ролями, часом завершення дії та будь-якими власними твердженнями, що їх додав видавець. Дійсний токен є ще й живими обліковими даними: доки він не сплив, будь-хто, хто ним володіє, може діяти від імені користувача. Вставлення робочого токена в онлайн-декодер надсилає активні облікові дані на сервер, який ви не контролюєте. Декодер, що розбирає токен у вашому браузері, показує той самий заголовок і навантаження, а токен при цьому ніколи не залишає сторінку.

Хешування: вхід важливіший за хеш
Хеш-функція перетворює будь-який вхід на хеш фіксованої довжини, і обернути хеш назад до входу неможливо. Ця властивість робить хешування корисним для перевірки цілісності файлу або порівняння значень без зберігання оригіналу. Підступ на боці входу: щоб обчислити хеш пароля, документа чи секрету конфігурації, треба передати інструменту справжнє значення. Якщо цей інструмент працює на сервері, конфіденційний вхід вирушає туди, хоча повертається лише безпечний хеш. Обчислення хешу локально лишає вхід на вашому пристрої, тож ви отримуєте потрібний хеш, не розкриваючи того, що хешували.
Кодування Base64: відображення байтів і доповнення
Base64 перетворює 8-бітні байти у 6-бітні символи, групуючи три вхідні байти (24 біти) у чотири 6-бітні значення. Кожне 6-бітне значення відображається на символ алфавіту Base64 (A-Z, a-z, 0-9, +, /). Оскільки процес вимагає вхідних даних, кратних 24 бітам, короткі вхідні дані доповнюються: один залишковий байт дає два символи доповнення (==), два залишкові байти дають один (=). Варіант Base64url, що використовується у JSON Web Tokens (JWTs), замінює + на - і / на _, щоб рядок був безпечним для URL, і повністю відкидає символи доповнення =, оскільки вони можуть спричиняти помилки у суворих парсерах URI. Розрізнення цих варіантів важливе при налагодженні обробки токенів: JWT, що виглядає некоректним, може просто бути закодованим у Base64url, а не стандартному Base64.
Підписи JWT: HS256, RS256 і плутанина алгоритмів
Безпека JSON Web Token повністю залежить від підпису, третього сегменту, розділеного крапками. З HS256 (HMAC-SHA256) сервер підписує заголовок і корисне навантаження, закодовані у Base64url, за допомогою секретного ключа. Хеш-функція SHA-256 забезпечує стійкість до колізій: обчислювально неможливо створити змінене корисне навантаження, яке хешується у той самий підпис без знання секретного ключа. З RS256 сервер підписує приватним ключем RSA і перевіряє публічним. Відома вразливість під назвою «плутанина алгоритмів» виникає, коли бібліотека сервера не застосовує суворої перевірки очікуваного типу алгоритму. Зловмисник може змінити поле alg заголовка токена з RS256 на HS256 і підписати токен, використовуючи публічний ключ сервера як секрет HMAC, оскільки публічні ключі часто доступні. Локальне декодування заголовка JWT у браузері дозволяє перевірити, який алгоритм фактично вказаний, не передаючи активний токен до сторонніх систем журналювання.
Інструменти з цієї статті
- Кодувальник / декодувальник Base64Кодуйте або декодуйте Base64, текст і файли. Без завантаження на сервер, 100% локально.
- Кодувальник / декодувальник URLКодуйте чи декодуйте рядки URL за допомогою відсоткового кодування. Без завантаження на сервер, 100% локально.
- Декодувальник JWTДекодуйте JWT (заголовок, корисне навантаження, термін дії) без надсилання його будь-куди. Без перевірки підпису.
- Генератор хешівГенеруйте хеші MD5, SHA-1, SHA-256, SHA-512 з тексту або файлів. Без завантаження на сервер.
Поширені запитання
Чи є Base64 або кодування URL формою захисту?
Ні. Обидва є оборотними кодуваннями, створені для безпечної передачі даних, а не для їх захисту. Будь-хто, хто прочитає закодований рядок, миттєво декодує його без ключа та пароля. Якщо значення треба тримати в таємниці, зашифруйте його належним алгоритмом і керуйте ключем окремо. Сприймайте будь-яке значення в Base64 чи з відсотковим кодуванням так, ніби воно написане відкритим текстом.
Чому важливо, де я декодую токен або хешую пароль?
Бо конфіденційною частиною є вхід. Дійсний JWT становить живі облікові дані, а пароль, який ви хешуєте, є справжнім секретом. Серверний інструмент отримує цей необроблений вхід ще до того, як поверне результат, а отже, копія може потрапити до журналу або зберегтися там, де ви її не побачите. Інструмент, що працює у вашому браузері, виконує ту саму операцію в памʼяті вашого власного пристрою, тож токен або пароль нікуди не надсилаються.