Альтернативы оценке JavaScript () для парсинга JSON

Попробуйте это для умных одинарных кавычек, если вышеприведенное не работает:

string.Replace("\342\200\230", "'")
string.Replace("\342\200\231", "'")

Попробуйте также и для умных двойных кавычек:

string.Replace("\342\200\234", '"')
string.Replace("\342\200\235", '"')
18
задан Miles 3 June 2009 в 17:59
поделиться

7 ответов

Что ж, безопасно это или нет, но при использовании jQuery лучше использовать метод $. GetJSON () , а не $ .ajax ():

$.getJSON(url, function(data){
    alert(data.exampleType);
});

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

Даже Дуглас Крокфорд, автор JSON, сказал, что вы не должны использовать eval () где-либо в своем коде, кроме синтаксического анализа JSON. См. Соответствующий раздел в его книге JavaScript: Хорошие части

26
ответ дан 30 November 2019 в 05:51
поделиться

Вы должны использовать JSON и написать JSON.parse.

«Ручной» синтаксический анализ выполняется слишком медленно, поэтому реализация JSON.parse из библиотеки проверяет материал, а затем завершает использование eval, поэтому он по-прежнему небезопасен . Но если вы используете новый браузер (IE8 или Firefox), код библиотеки фактически не выполняется. Вместо этого включается встроенная поддержка браузера , и тогда вы в безопасности.

Подробнее здесь и здесь .

19
ответ дан 30 November 2019 в 05:51
поделиться

Небезопасно? Это зависит от того, можете ли вы доверять данным.

Если вы можете быть уверены, что строка будет в формате JSON (и не будет включать, например, функции), тогда это безопасно.

Тем не менее, если вы используете jQuery, почему ты делаешь это вручную? Используйте параметр dataType , чтобы указать, что это JSON, и пусть библиотека позаботится об этом за вас.

5
ответ дан 30 November 2019 в 05:51
поделиться

Если вы не можете доверять источнику, значит, вы правы ... eval небезопасен. Его можно использовать для внедрения кода на ваши страницы.

Перейдите по этой ссылке для более безопасной альтернативы:

6
ответ дан 30 November 2019 в 05:51
поделиться

Использование eval JavaScript небезопасно. Поскольку JSON - это всего лишь подмножество JavaScript, но JavaScript eval допускает любой допустимый JavaScript.

Вместо этого используйте настоящий анализатор JSON, например JSON-анализатор с json.org .

3
ответ дан 30 November 2019 в 05:51
поделиться

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

Важно отметить, что оценка JSON небезопасна по своей сути. Пока вы доверяете источнику, чтобы не ссориться. Это включает в себя проверку того, что вещи, переданные в кодировщик JSON, правильно экранированы (чтобы люди на два шага вверх по потоку не выполняли код на машинах ваших пользователей).

3
ответ дан 30 November 2019 в 05:51
поделиться

Если вы используете jQuery, начиная с версии 1.4.1 вы можете использовать jQuery.parseJSON ()

См. Этот ответ: Безопасный синтаксический анализ json с помощью jquery?

4
ответ дан 30 November 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: