Можно ли использовать "JSON hijacking" в современном браузере?

Недавно я прочитал несколько статей о "захвате JSON", а некоторые из них здесь.

Итак, я попытался сделать это в браузерах Chrome 17 (dev), Firefox 8 и IE8.

  • переопределить конструктор объектов или массивов
  • изменить метод __defineSetter__
  • изменить метод defineProperty

Но я ничего не мог сделать с (буквальными) данными JSON.

Проблема "JSON hijacking" решена в современном браузере? Или как я могу воспроизвести его?

Ответ 1

Речь идет не о законном применении синтаксического разбора JSON-JSON - это проблема раскрытия информации о некоей вредоносной стороне, запрашивающей ваши данные JSON вместо реального приложения, в то время как пользователь регистрируется в приложении, которое обычно использует api. Простая аутентификация не помогает - поскольку браузер отправляет auth-информацию, например auth-cookie, бесплатно: -/.

Но с ES5 самый последний браузер больше не будет затронут непосредственно этой проблемой. Тем не менее, в глубине обороны! И может также защищать от будущих проблем или регрессий и т.д.

Ответ 2

Что-то вроде этого можно было бы теоретически злоупотреблять, если вы используете eval для декодирования JSON.

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