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

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

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

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

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

Категории

Все категории
Loading categories
json-sanitizer — JSON Sanitizer преобразует JSON-подобное содержимое в корректный JSON. | Kitploit
Инструменты/GitHubGitHub/owasp/json-sanitizer
Утилиты общего назначенияСтатический анализИнструменты шифрования/дешифрованияАнализ уязвимостейАнализ КодаВеб-безопасность
GitHubowasp/json-sanitizer

json-sanitizer

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

Репозиторий
21955432 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

json-sanitizer Fuzzing Status

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

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

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

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

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

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

Мотивация

Архитектура

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

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

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

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

Входные данные

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

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

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

Выходные данные

Вывод представляет собой хорошо оформленный JSON, как определено в RFC 4627. Вывод удовлетворяет следующим дополнительным свойствам:

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

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

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

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

root@kitploit:~
var myValue = eval(sanitizedJsonString);  // безопасно
var myEmbeddedValue = eval(myValue.foo);  // возможно, небезопасно

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

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

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

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

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

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