Кратко
- RFC 9839 задаёт три последовательно сужающихся набора: Unicode Scalars, XML Characters и Unicode Assignables.
- Синтаксически верный JSON способен через escape-последовательности нести управляющий код, одиночный суррогат или noncharacter; успех парсера не доказывает пригодность результата.
- Рабочее доказательство состоит из правила для каждого поля, явного выбора между отказом и заменой и одинаковых результатов по всей цепочке обработки.
Зелёный индикатор не лгал — он отвечал не на тот вопрос. Парсер понял скобки, кавычки и escape-последовательности. Он не подтвердил, что строка с NUL годится для идентификатора, что одиночный surrogate можно выпустить в корректный UTF-8 или что невидимый управляющий код не изменит журнал.
RFC 9839 опубликован в августе 2025 года как Standards Track. Карточка, текст и XML фиксируют три повторно используемые границы. Это спецификация, а не отчёт о внедрении или сертификация библиотек.
У Unicode нет единственного переключателя безопасности
Unicode Scalars исключает 2 048 суррогатных кодовых пунктов U+D800–U+DFFF, сохраняя старые управляющие коды и noncharacters. XML Characters дополнительно удаляет большинство C0-кодов и U+FFFE/U+FFFF. Unicode Assignables исключает суррогаты, старые управляющие коды и все noncharacters, но оставляет уже назначенные и потенциально назначаемые в будущем пункты.
Стандарт Unicode определяет пространство, UAX 44 — свойства. RFC 3629 описывает UTF-8, а RFC 2277 — политику наборов символов для интернет-протоколов. Кодировка объясняет, как разрешённые значения становятся байтами, но не выбирает значения для имени, подписи или правила доступа.
ABNF делает набор точной ссылкой вместо расплывчатого требования «валидный Unicode». Правило Char из XML 1.0 — известный профиль, но не универсальная гарантия безопасности текста.
Escape не выдаёт разрешение
RFC 8259 и его официальная карточка определяют JSON. Пример RFC 9839 синтаксически корректен, хотя после декодирования содержит NUL, C1-код, одиночный surrogate и noncharacter. Полученную строку нельзя представить корректным UTF-8, а библиотеки могут расходиться в реакции.
Escape меняет запись, не содержание. Проверка набора должна происходить после декодирования и до записи в авторитетное состояние. Универсальный парсер не знает, участвует ли поле в цифровой подписи, идентификации, отображении или контроле доступа.
I-JSON, Net-Unicode и PRECIS показывают необходимость профилей по назначению. Unicode Assignables не решает нормализацию, похожие символы, двунаправленное отображение и контекстные ограничения.
Отказ и замена сохраняют разные свойства
Отказ не даёт неоднозначной строке стать авторитетной записью. Замена на U+FFFD может сохранить отображение и показать повреждение, но уничтожает точную идентичность. Для подписи, хеша, ключа дедупликации, права доступа или юридического доказательства это существенное изменение.
Молчаливое удаление опаснее: разные входы способны слиться, а аудит перестаёт отражать полученное. RFC 9413 связывает устойчивость с явной обработкой некорректного ввода, а не с безусловной терпимостью.
Отказ тоже требует защиты доступности. Дорогая диагностика может стать инструментом давления. Ограничение частоты, короткая ошибка, карантин и сохранение исходного образца остаются решениями оператора.
Квитанция проходит через весь тракт
Одинаковые векторы должны пройти шлюз, парсер, валидатор, очередь, драйвер БД, хранилище, журнал, экспорт и потребителя. Отдельно считаются синтаксический сбой, нарушение набора, намеренная замена и поздняя ошибка сериализации. Сверяются последовательность скаляров, решение, класс ошибки и сохранённая форма.
CBOR по умолчанию использует Unicode scalar values для текстовых строк. Он исключает суррогаты, но не все управляющие коды и noncharacters. Замена контейнера не отменяет политику поля.
TR36 рассматривает более широкую безопасность Unicode, TR55 — исходный код, а W3C различает символы, кодовые пункты, кодовые единицы и байты. RFC 9839 сознательно уже этих задач.
В этом материале не тестировались продукты, базы, среды исполнения или производственные маршруты; уровень внедрения неизвестен. Доказуемый вывод ограничен: парсер координирует синтаксис, но не авторизует содержание. Допуск подтверждается только одинаковыми наблюдаемыми решениями работающих компонентов.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
