Skip to main content

V5.5.4 Deserialization Prevention

Requirement:#

Verify that when parsing JSON in browsers or JavaScript-based backends, JSON.parse is used to parse the JSON document. Do not use eval() to parse JSON.

Explanation:#

Убедитесь, что при разборе JSON в браузерах или в серверной части на основе JavaScript для документа JSON используется JSON.parse. Не используйте eval() для разбора JSON.

Это может позволить злоумышленнику выполнить произвольный код или, по крайней мере, изменить код, который может быть выполнен.

Remediation:#

Устранение этой проблемы заключается в том, чтобы убедиться, что при синтаксическом анализе JSON в браузерах или бэкендах на основе JavaScript вместо eval() используется метод JSON.parse. Это гарантирует, что входные данные обрабатываются как строка, а не выполняются как код.

Вот пример того, как использовать JSON.parse для анализа данных JSON:

var jsonData = '{"name": "John", "age": 30, "city": "New York"}';
var data = JSON.parse(jsonData);
console.log(data.name);
// Output: John

В этом примере метод JSON.parse используется для анализа данных JSON, хранящихся в переменной jsonData. Метод возвращает объект JavaScript, который затем можно использовать для доступа к свойствам данных JSON.

Additional:#

CWE - CWE-95: Неправильная нейтрализация директив в динамически оцениваемом коде («Eval Injection») (4.9) (mitre.org)