?

Log in

JSON, eval и скобочки - Скрыпт [entries|archive|friends|userinfo]
Скрыпт

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

JSON, eval и скобочки [Jul. 6th, 2007|04:03 pm]
Скрыпт

script_magazine

[shabunc]

Есть такие грабли, на который в жизни обязательно должен наступить любой программист. Дело не в том, что ты начинающий - все когда-то были начинающие. И дело не в том, что ты мало пишешь - как раз когда ты много пишешь, ты и попадёшь с большей вероятностью в те ловушки и капканы, в которые должен попасть. Классика js - текстовые поля формы, неверно трактуемые как числовые. Или засада похлеще - такое может быть, если ты пишешь хоть на перле, хоть на Си, но пишешь невнимательно. С дебагом всё работает - отключаешь дебаг - что-то не работает. Потому что какая-то переменная прямо во время дебага и модифицировалась.

А вот этот типа вебдванольный вопрос - вопрос эпохи уверенной поступи JSON - а почему eval('{prop1:val1, prop2:val2}') не работает? Вчера такой вопрос был задан на жж-ру_вебдев. Я признаться, сам не сразу вспомнил ответ.

(Читать дальше)

linkReply

Comments:
[User Picture]From: sb16
2007-07-07 10:44 am (UTC)
Потому что, во-первых, eval('var z = {prop1:val1, prop2:val2}'), а во-вторых евалить - очень плохо! Специально для этого есть такой сайтик как http://www.json.org/js.html
(Reply) (Thread)
[User Picture]From: shabunc
2007-07-11 11:47 am (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: sb16
2007-07-11 11:57 am (UTC)
Видимо вы плохо прочитали Крофорда...
(Reply) (Parent) (Thread)
[User Picture]From: shabunc
2007-07-11 12:09 pm (UTC)
мотивируйте пожалуйста.
я не истина в последней инстанции.
вы говорите эвал - зло. вот это не зло.
я говорю - эвал используется в том числе и в json.js
(Reply) (Parent) (Thread)
[User Picture]From: sb16
2007-07-11 01:11 pm (UTC)
Смысл либы для json в том, чтобы вырезать из полученных данных всё, что не относится к нужным данным. То есть вам могут прислать вместе с данными какой-нить скрипт, который куки тырит или ещё что. Вот чтобы ничего постороннего не было эта либа и нужна. Конечно если приходящие данные сгенерированы вами и пользователь в них вмешаться не может, то можно и просто евалить всё. Но данные приходящие в результате пользовательского ввода могут содержать вредоносный код. Конечно можно фильтровать и со стороны сервера.
(Reply) (Parent) (Thread)
[User Picture]From: shabunc
2007-07-11 01:35 pm (UTC)
тысяча чертей. вы говорите ровно то же, что и я говорю.
вот честно.
(Reply) (Parent) (Thread)