Есть ли безопасный способ проверки ввода JSON с помощью JavaScript? - PullRequest
1 голос
/ 20 марта 2011

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

Какой хороший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

JSON - это JavaScript.Следовательно, вы можете проверять JSON статически так же, как и JavaScript.Вы обеспокоены подходом eval, который обычно может использоваться для проверки JavaScript, и вы очень мудры, чтобы избежать этого подхода.Если это злонамеренно и вы выполняете для проверки, ну, вы уже облажались. JSLint - отличный инструмент для этого.См. Вопрос переполнения стека Доступен ли JSLint для автономного использования? , чтобы узнать, как использовать эту утилиту "в автономном режиме".

Другой подход заключается в использовании json2.js.Этот метод правильно выполняет синтаксический анализ JSON-содержащих функций, поэтому следует учитывать это предостережение.

1 голос
/ 22 февраля 2013

Используйте JSON.parse(jsonString);. Это создаст массивы и объекты, но не запустит какой-либо код в JSON. Для поддержки старых браузеров без объекта HTML5 JSON используйте json2.js , который обеспечивает такую ​​же защиту с использованием того же API, проверяя недействительные данные перед eval() использованием JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...