Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
OWASP__json-sanitizer_CVE-2020-13973_1-2-0 — Java-библиотека, которая преобразует повреждённое JSON-подобное содержимое в соответствующий стандартам, безопасный JSON, предотвращая внедрение кода и обеспечивая возможность встраивания в контексты HTML/XML. | Kitploit
Инструменты/GitHubGitHub/shoucheng3/owasp__json-sanitizer_cve-2020-13973_1-2-0
Утилиты общего назначенияСтатический анализИнструменты шифрования/дешифрованияАнализ уязвимостейАнализ КодаВеб-безопасность
GitHubshoucheng3/owasp__json-sanitizer_cve-2020-13973_1-2-0

OWASP__json-sanitizer_CVE-2020-13973_1-2-0

Java-библиотека, которая преобразует повреждённое JSON-подобное содержимое в соответствующий стандартам, безопасный JSON, предотвращая внедрение кода и обеспечивая возможность встраивания в контексты HTML/XML.

Репозиторий
331 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

json-sanitizer

JSON Sanitizer преобразует JSON-подобное содержимое в валидный JSON.

Начало работы - Контакты

Этот инструмент может быть подключён на любом конце конвейера данных, чтобы помочь удовлетворить принцип Постела:

будьте консервативны в том, что делаете, и либеральны в том, что принимаете от других

Применённый к JSON-подобному содержимому от других, он создаст корректный JSON, который удовлетворит любой используемый вами парсер.

Применённый к вашему выводу перед отправкой, он исправит небольшие ошибки в кодировании и облегчит встраивание вашего JSON в HTML и XML.

Мотивация

Архитектура

Многие приложения имеют большие объёмы кода, использующего ad-hoc методы для генерации JSON-вывода.

Часто этот вывод проходит через небольшой объём каркасного кода перед отправкой по сети. Этот небольшой объём каркасного кода может использовать данную библиотеку, чтобы гарантировать, что ad-hoc вывод соответствует стандартам и безопасен для передачи (чрезмерно) мощным десериализаторам, таким как оператор eval в JavaScript.

Приложения также часто имеют веб-сервисные API, которые получают JSON из различных источников. Когда этот JSON создаётся ad-hoc методами, данная библиотека может привести его в форму, удобную для парсинга.

Подключив эту библиотеку к коду, который отправляет и получает запросы и ответы, она может помочь архитекторам программного обеспечения обеспечить общесистемную безопасность и корректность формата.

Ввод

Санайзер принимает JSON-подобное содержимое и интерпретирует его так, как это сделал бы JS eval. В частности, он обрабатывает следующие нестандартные конструкции.

КонструкцияПолитика
'...'Строки в одинарных кавычках преобразуются в JSON-строки.
\xABШестнадцатеричные escape-последовательности преобразуются в JSON-escape-последовательности Юникода.
\012Восьмеричные escape-последовательности преобразуются в JSON-escape-последовательности Юникода.
0xABШестнадцатеричные целочисленные литералы преобразуются в JSON-десятичные числа.
012Восьмеричные целочисленные литералы преобразуются в JSON-десятичные числа.
+.5Десятичные числа приводятся к более строгому формату JSON.
[0,,2]Пропуски в массивах заполняются значением null.
[1,2,3,]Завершающие запятые удаляются.
{foo:"bar"}Неэкранированные имена свойств заключаются в кавычки.
//commentsJS-комментарии (строчные и блочные) удаляются.
(...)Группирующие скобки удаляются.

Санайзер исправляет отсутствующую пунктуацию, закрывающие кавычки, а также несоответствующие или отсутствующие закрывающие скобки. Если ввод содержит только пробельные символы, то подставляется валидная JSON-строка null.

Вывод

Результат — это корректный JSON, определённый в RFC 4627. Вывод удовлетворяет следующим дополнительным свойствам:

  • Вывод не будет содержать подстроки (без учёта регистра) "</script", поэтому его можно встраивать в HTML-элемент script без дополнительного кодирования.
  • Вывод не будет содержать подстроки "]]>", поэтому его можно встраивать в XML-секцию CDATA без дополнительного кодирования.
  • Вывод представляет собой допустимое выражение JavaScript, поэтому может быть проанализирован встроенной функцией eval JavaScript (после заключения в скобки) или JSON.parse. В частности, вывод не будет содержать строковых литералов со встроенными символами новой строки JS (U+2028 разделитель абзацев или U+2029 разделитель строк).
  • Вывод содержит только допустимые скалярные значения Юникода (без изолированных суррогатных пар UTF-16), которые разрешены в XML без экранирования.

Безопасность

Поскольку вывод представляет собой корректный JSON, передача его в eval не будет иметь побочных эффектов и свободных переменных, поэтому он не является ни вектором внедрения кода, ни вектором для вывода секретов.

Данная библиотека гарантирует только то, что этап преобразования строки JSON в объект JavaScript не имеет побочных эффектов и не разрешает свободные переменные, и не может контролировать, как другой клиентский код впоследствии интерпретирует полученный объект JavaScript. Поэтому, если клиентский код берёт часть разобранных данных, контролируемых атакующим, и передаёт её обратно через мощный интерпретатор, такой как eval или innerHTML, то этот клиентский код может столкнуться с непреднамеренными побочными эффектами.

root@kitploit:~
var myValue = eval(sanitizedJsonString);  // safe
var myEmbeddedValue = eval(myValue.foo);  // possibly unsafe

Кроме того, санация JSON не может защитить приложение от атак запутанного заместителя

root@kitploit:~
var myValue = JSON.parse(sanitizedJsonString);
addToAdminstratorsGroup(myValue.propertyFromUntrustedSource);

Производительность

Метод sanitize вернёт входную строку без выделения нового буфера, если входные данные уже являются корректным JSON, удовлетворяющим указанным выше свойствам. Таким образом, при использовании на вводе, который обычно корректен, это даёт минимальные накладные расходы по памяти.

Метод sanitize работает за время O(n), где n — длина входных данных в 16-битных юнитах UTF-16.

Скачать инструмент