Это правильный ответ JSON? - PullRequest
5 голосов
/ 24 мая 2011

Гуру дня,

Я вызываю API REST корпоративного приложения, которые должны остаться безымянными, и они возвращают JSON, например:

throw 'allowIllegalResourceCall is false.';
{
  "data": ... loads of valid JSON stuff here ...
}

Это действительно допустимый JSON? Если (как я подозреваю) это не так, есть ли непреодолимая причина для такого рода махинаций?

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

Заранее спасибо!

Peter

Ответы [ 6 ]

5 голосов
/ 24 мая 2011

Согласно

http://jsonlint.com/

Это не так.

Что-то похожее на приведенное ниже.

{
    "data": "test"
}

Они ожидают, что вывытащить JSon из сообщения выше?

3 голосов
/ 04 июня 2014

Это не формат JSON вообще. Из вашего вопроса кажется, что вы работаете с корпоративными системами, такими как JIVE :). Я также сталкиваюсь с той же проблемой с JIVE API. Это проблема с их V3 API. Не стандартная, но следующая вещь работала для меня. (Я не уверен, говорите ли вы о JIVE или нет)

//invalid jason response... https://developers.jivesoftware.com/community/thread/2153  
 jiveResponse = jiveResponse.Replace
 ("throw 'allowIllegalResourceCall is false.';",String.Empty);                  
1 голос
/ 02 августа 2011

Для этого есть веская причина: он защищает от CSRF-атак.Если вы включите URL-адрес JSON в качестве цели тега <script>, то политика того же происхождения не применяется.Это означает, что вредоносный сайт может включать URL-адрес JSON API, и любые прошедшие проверку пользователи будут успешно запрашивать эти данные.

При соответствующем переопределении Object.prototype и / или Array.prototype вредоносный сайт может получитьданные анализируются как литерал объекта или литерал массива (и все допустимые JSON также являются допустимыми JavaScript).Оператор throw защищает от этого, делая невозможным анализ JavaScript, включенного в страницу, с помощью тегов <script>.

0 голосов
/ 05 мая 2013

Кажется, они добавили эту строку, чтобы предотвратить JSON Hijacking. Нечто подобное этой строке требуется для предотвращения перехвата JSON, только если вы возвращаете массив JSON. Но они, возможно, добавили эту строку выше всех своих ответов JSON для упрощения реализации.

Прежде чем использовать его, вы должны удалить первую строку, а затем проанализировать оставшуюся часть как JSON.

0 голосов
/ 24 мая 2011

throw 'allowIllegalResourceCall is false.';, конечно, не является допустимым JSON.

О каком типе MIME сообщается?

0 голосов
/ 24 мая 2011

Определенно НЕ действительный JSON. Может быть, есть ошибка в реализации, которая смешивает какой-то отладочный вывод с правильным выводом?

И это ни в коем случае не из соображений безопасности. Мне кажется, это простая ошибка.

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