Ошибка при парсинге json
Доброго времени суток всем. Возникла проблема с парсингом json. Вот код:
function parseJson() { var jsonText=req.responseText; document.write(jsonText); jsonObj=eval("("+jsonText+")"); document.write(jsonObj.peoples.name); } первый document.write для того, чтобы убедится, что функция действительно получила текст, второй выводит результаты парсинга. Ошибка: Код:
Unknown thread |
Ну так дйте это содержимое
|
И отформатируйте код!
|
И не используйте document.write
|
И не жалуйтесь на форумах!
|
Содержимое переменной jsonText: {"peoples":{"name":"asd"}}
document.write(jsonObj.peoples.name); выводит asd |
В таком парсинге json есть ошибка, связанная с некоторыми символами Юникода, при столкновении с которыми eval сваливается.
Здесь можно посмотреть, какие именно символы квотируются |
Использование eval - не самая безопасная штука. Можно использовать парсеп на js (ссылка e1f) он это допольнительный трафик. Советую в сторону XML посмотреть.
|
Цитата:
|
если вы сможете гарантировать, что данные передаваемые в eval поступают из надёжного источника, тогда ничего - всё безопасно.
|
Я вам на клиентской стороне вообще ничего не могу гарантировать, независимо от использования eval. Вы, кажется, начитались статей про PHP и интерполируете их на JavaScript.
|
Tim,
А xml по-вашему это не траффик? Подключить 1 раз небольшую либу, еще и минифай/обфускейт ее, или все время "переплачивать" на траффике из-за xml -- что лучше? |
e1f,
х.з. х.з. м.б., пропустил JSON парсер через JavaScript Compresso действительно не много получается - 3,27 КБ |
Прочитайте про AJAX Injection. И будет ясно, почему eval не безопасен
|
alexKniaz,
подумайте головой, и будет ясно, почему нельзя взломать сайт за счет только клиентского кода. Или хотя бы приведите пример уязвимого js-кода. На всякий случай: XSS -- дыра серверная. |
Часовой пояс GMT +3, время: 07:32. |