Base32 и Base64 относятся к семейству представлений бинарных данных в текстовом виде. Валидация таких строк в JavaScript чаще всего выполняется не на уровне семантики данных, а на уровне соответствия формальному алфавиту и правилам кодирования. Библиотека Validator.js реализует эти проверки как синтаксические предикаты: строка либо соответствует формату, либо нет.
Основная задача подобных проверок — исключить некорректные или потенциально вредоносные входные данные до этапа декодирования. Это особенно важно при обработке токенов, подписей, идентификаторов сессий, JWT-компонентов и данных API.
Base64 — это схема кодирования, использующая 64 символа: латинские
буквы верхнего и нижнего регистра, цифры, а также символы +
и /. В стандартном виде (RFC 4648) данные дополняются
символом = для выравнивания длины до кратности 4.
Validator.js предоставляет функцию:
validator.isBase64(str [, options])
Проверка включает следующие аспекты:
=;isBase64Функция поддерживает опции, влияющие на строгость проверки:
urlSafe Позволяет использовать
URL-safe вариант Base64, где:
+ заменяется на -/ заменяется на _paddingRequired Управляет
обязательностью символов =:
true — padding обязателен;false — допускается отсутствие =.Пример:
validator.isBase64('SGVsbG8gV29ybGQ=', { paddingRequired: true });
URL-safe вариант:
validator.isBase64('SGVsbG8tV29ybGQ_', { urlSafe: true });
При ослабленных настройках функция допускает строки, которые технически могут быть корректно декодированы, но не соответствуют каноническому виду Base64. Это полезно при обработке данных из внешних API, где формат может варьироваться.
При работе с Base64 часто встречаются нарушения формата, которые Validator.js может выявить:
@, #,
пробелы);Особое внимание требуется при работе с данными, прошедшими через несколько слоёв транспортировки (HTTP → JSON → база данных), так как кодировка может быть искажена на любом этапе.
Base32 использует 32-символьный алфавит, состоящий из заглавных латинских букв и цифр 2–7. Основное назначение — более устойчивое к ошибкам кодирование по сравнению с Base64, особенно в ручном вводе и в системах, где важна читаемость.
Ключевые характеристики:
A–Z и 2–7;= в
зависимости от реализации.Validator.js предоставляет функцию:
validator.isBase32(str)
Она проверяет соответствие строки стандарту Base32 (RFC 4648).
validator.isBase32('JBSWY3DPEBLW64TMMQ======');
Строка считается корректной, если она:
В отличие от Base64, Base32 менее гибок в вариантах представления. URL-safe модификаций как стандартизированного подмножества обычно не используется, что упрощает проверку, но снижает универсальность.
Различия в подходе Validator.js отражают различия самих кодировок:
Base64:
Base32:
Валидация Base64 и Base32 в Validator.js применяется в системах, где данные приходят в виде строковых представлений бинарных объектов:
При обработке входных данных важно учитывать неоднозначные ситуации:
= в конце,
что не всегда критично, но влияет на строгость проверки;Проверки Validator.js работают исключительно на уровне формата строки и не гарантируют корректность декодирования или целостность данных.
Синтаксически валидная строка Base64 или Base32 может:
Поэтому в реальных системах валидация часто дополняется: