-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407

Eval против JSON.parse

11.11.2025, 17:46. Показов 2615. Ответов 78
Метки нет (Все метки)

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

Но сейчас решил разобраться из чисто теоретического интереса: почему плохо и плохо ли использование eval в таком применении:

В php формируется строка типа:
PHP
1
2
$st= 'let m_el = ["знач. 1","знач. 2","знач. 3", ...];
echo $st;
=>
js
JavaScript
1
eval.call(window, xmlHttp.responseText);
По-моему понятно, что передается строка через аякс - js ее получает из надежного источника, выполняется код и формируется в данном случае массив.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2025, 17:46
Ответы с готовыми решениями:

Отловить ошибку в JSON.parse (переварить не JSON)
получаю ajax ответ от сервера, это строка json. Если на сервере скрипт падает, например по...

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
Всем привет, пытаюсь произвести запрос к обработчику c помощью AJAX, выдает ошибку при парсинге...

Проверка валидности разбора JSON (JSON.parse)
Пытаюсь разобрать некорректную json строку вот так: var response = JSON.parse(data); Как...

78
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
13.02.2026, 22:35  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от voraa Посмотреть сообщение
Вам это уже много раз объясняли, но бестолку.
voraa, во-первых еще раз спасибо.
Во вторых, минимум со многим из написанного согласен. Но. Немного напрягает, что намного дольше, чем планировал тянется разработка. Конечно, одна из основных причин - не закончив одну систему, взялся за другую (хоть и взаимосвязанную, точнее автоматизированную систему документирования кода) не рассчитав, что она окажется намного сложнее, чем предполагал первоначально.

Цитата Сообщение от voraa Посмотреть сообщение
Программер фронта, смотря программу через несколько месяцев/лет не должен гадать откуда там взялась неописанная переменная и лезть в программу на сервере, что бы понять это.
Не могу согласиться с данным тезисом. Точнее он имеет место быть. Но не вижу проблем, если какие-либо переменные js будут создаваться на сервере. Для этого стараюсь (м.б. не всегда получается из-за особенностей веба, и не удалось выработать правильный стиль документирования) документировать с перекрестными ссылками ( в т.ч. и переменных) откуда, назначение. Кроме того для этого и начал писать (назвал его документатором), чтобы можно было проследить все переменные, функции, ... + их описание. И в этом случае не возникло никаких проблем по озвученной Вами проблеме. Просто на все нужно время - надеюсь все разрешится.

Цитата Сообщение от voraa Посмотреть сообщение
У него нет сильных сторон. Все, что может eval можно делать другими более безопасными средствами.
Читал, и в этой темеkrvsa привел ссылку на альтернативные eval методы.

Повторюсь, пока не уверен, что удастся реализовать данную идею (но она мне очень понравилась, и, если она реализуется, присоединюсь к упомянутому выше мнению, что eval наиболее мощная конструкция - и при условии, что у него нет альтернативы):
формируется на сервере код, который передается клиенту и мне надо его выполнить. И какими альтернативными методами вместо eval я смогу его выполнить ?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1706 / 431
Регистрация: 14.03.2022
Сообщений: 4,355
13.02.2026, 23:48
Цитата Сообщение от 755 Посмотреть сообщение
формируется на сервере код, который передается клиенту и мне надо его выполнить. И какими альтернативными методами вместо eval я смогу его выполнить ?
Х/з какую ты задачу решаешь таким образом...
Но код JS с сервера может быть подключен обычным тегом
PHP/HTML
1
<script></script>
После загрузки он выполнится...

Это даже не альтернатива. Это как бы азы.
0
209 / 70 / 18
Регистрация: 29.02.2016
Сообщений: 356
13.02.2026, 23:53
Цитата Сообщение от 755 Посмотреть сообщение
И какими альтернативными методами вместо eval я смогу его выполнить ?
А вы в MDN читали статью про eval?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1706 / 431
Регистрация: 14.03.2022
Сообщений: 4,355
13.02.2026, 23:56
stele, это бесполезно...
У ТСа свой путь. Он не свернет...
0
209 / 70 / 18
Регистрация: 29.02.2016
Сообщений: 356
13.02.2026, 23:59
Цитата Сообщение от krvsa Посмотреть сообщение
Это даже не альтернатива.
Я кажется начинаю догадываться в контексте помянутой защиты переданных данных: "а как потом серверу проверить, что этот <script></script> он выполняется со странички отданной именно сервером, а не загруженной откуда-то на стороне и не браузером" ...
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1706 / 431
Регистрация: 14.03.2022
Сообщений: 4,355
14.02.2026, 00:01
stele, да там вообще концов не найдешь...
0
209 / 70 / 18
Регистрация: 29.02.2016
Сообщений: 356
14.02.2026, 00:04
Цитата Сообщение от krvsa Посмотреть сообщение
У ТСа свой путь. Он не свернет...
Угу, а потом вдруг обружит что всё это прибито напрочь правилами CORS. И оказывается не ты один такой вумный сконстрячил себе попроще на коленке, а там такие коварные великие мозги всё продумали как вынести всё под шумок с твоего устройства...
0
Эксперт .NET
 Аватар для Usaga
14322 / 9415 / 1356
Регистрация: 21.01.2016
Сообщений: 35,482
14.02.2026, 08:53
Цитата Сообщение от 755 Посмотреть сообщение
Но. Немного напрягает, что намного дольше, чем планировал тянется разработка.
Это потому, что ты фигнёй лютой занимаешься, а не разработкой. Уже не в первый тебе про это говорят. Ты сам себе придумываешь проблемы так, где ими даже не пахло и сам же с помощью "зала" их пытаешься решить.

Вот эта вот тема про eval - одна из тех битв с мельницей, где победителем выйдет мельница... или санитары.
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.02.2026, 09:25  [ТС]
Цитата Сообщение от stele Посмотреть сообщение
А вы в MDN читали статью про eval?
Если это она:https://developer.mozilla.org/... jects/eval
то да, нашел данную ссылку среди сохраненных ранее. Хотя и не помнил ее конкретно, потому что почти все пишут, что eval пользоваться нельзя.
Но отношусь к этому так, что любой человек (тем более, что нее могу оценить уровень сообразительности и знаний данного автора) может ошибаться.
Кроме того встретилась и такая фраза (опять же, не знаю, насколько ей можно доверять): "Eval проверенных данных в плане безопасности вреда не несёт."
Т.е. первое противоречит второму и кто-то ошибается. Вопрос, кто.

А вот еще одна фраза: Eval снижает производительность. И непонятно как к ней относиться: влияет ли он на производительность всего кода, или только выполняемого Eval.

Цитата Сообщение от krvsa Посмотреть сообщение
PHP/HTML
<script></script>
После загрузки он выполнится...
Это даже не альтернатива. Это как бы азы
krvsa, увы не знал этих азов. (можно не повторяться на счет литературы, да, надо в первую очередь начинать именно с нее. И вполне возможно, что совершил ошибку не начав с того же Флэнагана - надо было бы пробежаться по диагонали по оглавлению).
Хотя не так давно подумал, дай попробую поставлю в echo в коде php <script></script> - да, код js выполнялся. Но, когда попробовал использовать через аякс данную конструкция выполнить код не получилось.
Поэтому не смог понять, как выполнить код с сервера для конкретного пользователя. Подумал, что этого нельзя. ( не знал я этих азов - учиться, учиться и учиться)

И, отвечая, какую задачу решаю данным образом (решил, что не будет вреда для проекта, если ее озвучу) : думаю запустить некий секретный код, который извне нельзя будет увидеть и соответственно узнать, что он выполнил.
Думал через аякс получить xmlHttp.responseText, его выполнить eval и тут же очистить xmlHttp.responseText (прочитал, что это возможно, хоть это и глобальный объект)
0
3060 / 1460 / 265
Регистрация: 16.03.2008
Сообщений: 6,500
Записей в блоге: 2
14.02.2026, 10:12
Цитата Сообщение от 755 Посмотреть сообщение
И, отвечая, какую задачу решаю данным образом (решил, что не будет вреда для проекта, если ее озвучу) : думаю запустить некий секретный код, который извне нельзя будет увидеть и соответственно узнать, что он выполнил.
Думал через аякс получить xmlHttp.responseText, его выполнить eval и тут же очистить xmlHttp.responseText (прочитал, что это возможно, хоть это и глобальный объект)
Прежде чем решать проблемы секретности, лучше бы буквари почитали. Здесь даже не обязательно именитых авторов читать. Мне кажется даже "недоблогеров" у которых у самих уровень знаний не высокий, будет достаточно посмотреть, чтоб понять, что идея абсолютно глупая. Любой новичок (знающий самую базу) ваши данные увидит в браузере, без единого "хакерского" метода. Достаточно знать как работает веб.

Добавлено через 2 минуты
Самый максимум, что в можете себе позволить в плане "секретности кода" на стороне браузере это применить обфускацию. Но: это точно так же лишь иллюзия защищенности. Хотя уже, скорее всего, чайник не достанет (по крайней мере не разберется в полученном)
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.02.2026, 10:20  [ТС]
Спасибо, voral, это была просто мысль на будущее. И было интересно как раз узнать реакцию на нее.

Жаль, что нельзя скрыть код, даже его удалив (до или после).

Цитата Сообщение от voral Посмотреть сообщение
Прежде чем решать проблемы секретности, лучше бы буквари почитали.
Как говорят наши лидеры, все идет по плану
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
14.02.2026, 11:02
Цитата Сообщение от 755 Посмотреть сообщение
Не могу согласиться с данным тезисом. Точнее он имеет место быть. Но не вижу проблем, если какие-либо переменные js будут создаваться на сервере. Для этого стараюсь (м.б. не всегда получается из-за особенностей веба, и не удалось выработать правильный стиль документирования) документировать с перекрестными ссылками ( в т.ч. и переменных) откуда, назначение. Кроме того для этого и начал писать (назвал его документатором), чтобы можно было проследить все переменные, функции, ... + их описание. И в этом случае не возникло никаких проблем по озвученной Вами проблеме.
Проблема может быть в том, что фронтер вообще не обязан знать языки бека. Я, например, php знаю в каком то минимальном объеме букваря. И более сложном скрипте на php буду разбираться очень долго. А бек может быть написан на чем угодно. Я в свое время на C писал. И представьте, что бы было делать фронтеру, что бы разобраться откуда там переменная, и поменять ее.
А что делать фронтеру, если такая переменная, должна быть не глобальной, а локальной в функции или блоке?
Бэк и фронт должны быть полностью независимы и пересекаться только по данным.
Цитата Сообщение от 755 Посмотреть сообщение
Хотя не так давно подумал, дай попробую поставлю в echo в коде php <script></script> - да, код js выполнялся. Но, когда попробовал использовать через аякс данную конструкция выполнить код не получилось.
Как многого вы не знаете и не понимаете. И судя по всему не желаете знать.
0
209 / 70 / 18
Регистрация: 29.02.2016
Сообщений: 356
14.02.2026, 11:20
Цитата Сообщение от 755 Посмотреть сообщение
"Eval проверенных данных в плане безопасности вреда не несёт."
Ну так речь о проверенных данных, а ваши данные где-то шлялись между сервером и клиентом. Перед тем как стрелять себе в ногу пулю надо дезинфицировать.
Цитата Сообщение от 755 Посмотреть сообщение
думаю запустить некий секретный код, который извне нельзя будет увидеть и соответственно узнать, что он выполнил.
В браузере есть чудесные интрументы разработчика, попробуйте их.
Цитата Сообщение от 755 Посмотреть сообщение
увы не знал этих азов.
Учиться, учиться и ещё раз учиться (с)
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.02.2026, 11:47  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Проблема может быть в том, что фронтер вообще не обязан знать языки бека. Я, например, php знаю в каком то минимальном объеме букваря. И более сложном скрипте на php буду разбираться очень долго. А бек может быть написан на чем угодно. Я в свое время на C писал.
Так уж сложилось, что первый серверный язык, о котором услышал и на котором писал тот программист был php. Другой знакомый умный программист в разговоре приводил аргументы в пользу python. Задавал ранее на форуме вопрос и получил ответ, что выбор языка не является узким местом в разработке (php ли это или другой язык). Но почему-то двое программистов, как только услышали, что пишу на php, категорически отказались участвовать в проекте.

Цитата Сообщение от voraa Посмотреть сообщение
Бэк и фронт должны быть полностью независимы и пересекаться только по данным.
Наверное так есть и у меня. Было желание даже добавить к более раннему комментарию (не совсем точному), что формируются и передаются клиенту только данные из БД. По крайней мере пока.

Цитата Сообщение от voraa Посмотреть сообщение
Как многого вы не знаете и не понимаете. И судя по всему не желаете знать.
По крайней мере я это и сам знаю и признаю. Но это не значит, что не желаю знать - просто приходится выбирать между познанием и программированием. И, сравнивая свои знания с скажем уровня год назад, заметно продвинулся.
И был случай: когда были уже готовы к показу две системы (1-й режим и Документатор), удаленно показал одному знакомому и знающему программисту. В комментарии в воцапе мои знания js и php он оценил как хорошие (не помню точно хорошие или очень хорошие, но это и не важно) (по результатам того, что увидел), только по css написал, что нужно подучиться. Это я к тому, что надеюсь и этих знаний хватит для создания и запуска системы. А уже при готовности мне помогут уже с ее запуском и эксплуатацией.

Добавлено через 4 минуты
Цитата Сообщение от stele Посмотреть сообщение
Ну так речь о проверенных данных, а ваши данные где-то шлялись между сервером и клиентом
Как раз и веду речь о своих, сформированных именно мною, возможно хранящихся даже не в БД, а в коде php) и уверенных в них на 150% (если конечно не будет взломан сервер)

Добавлено через 2 минуты
Цитата Сообщение от stele Посмотреть сообщение
В браузере есть чудесные интрументы разработчика, попробуйте их.
Спасибо
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
14.02.2026, 12:02
Цитата Сообщение от 755 Посмотреть сообщение
просто приходится выбирать между познанием и программированием.
Хорошо, что все таки большинство автовладельцев не выбирают между изучением ПДД и ездой.
Просто сначала одно, потом другое.
Цитата Сообщение от 755 Посмотреть сообщение
В комментарии в воцапе мои знания js и php он оценил как хорошие
Можно знать сам язык, синтаксис, операторы, но совершенно не понимать, как использовать api и когда, какие.
Показатель:
Цитата Сообщение от 755 Посмотреть сообщение
Но, когда попробовал использовать через аякс данную конструкция выполнить код не получилось.
И простое знание языка тут не поможет

Добавлено через 3 минуты
Цитата Сообщение от 755 Посмотреть сообщение
Но почему-то двое программистов, как только услышали, что пишу на php, категорически отказались участвовать в проекте.
Ну не знают они php (как и я) и изучать влом, не пойми ради чего. Я бы тоже не согласился.
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.02.2026, 12:08  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Ну не знают они php (как и я) и изучать влом, не пойми ради чего
По реакции мне показалось, что причина была в ином. Но на вопрос, почему, первый мне не ответил - к сожалению, такое встречается часто

Цитата Сообщение от voraa Посмотреть сообщение
большинство автовладельцев не выбирают между изучением ПДД и ездой.
Мой друг, насколько знаю, вначале научился ездить в деревне, а потом уже получил права. (по его словам)
0
209 / 70 / 18
Регистрация: 29.02.2016
Сообщений: 356
14.02.2026, 12:11
Цитата Сообщение от 755 Посмотреть сообщение
сформированных именно мною, возможно хранящихся даже не в БД, а в коде php) и уверенных в них на 150% (если конечно не будет взломан сервер)
Так создайте шаблон страницы, на сервере заполняйте его и отдавайте её уже сразу с этими данными. Зачем вся эта движуха? А если без передачи данных не обойтись - их надо валидировать. По пути из одного надёжного источника в другой надёжный источник с ними может случиться всё что угодно: от частичной порчи до митм атаки. И если в случае с JSON они будут корректно проверены уже на уровне среды и самое страшно это null или undefined, то в случае eval можно уронить дальнейшее выполнение скрипта.
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.02.2026, 12:16  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
но совершенно не понимать, как использовать api и когда, какие.
Да, в этом в отношении меня Вы правы. Приму к сведению. Спасибо.

Добавлено через 4 минуты
Цитата Сообщение от stele Посмотреть сообщение
Так создайте шаблон страницы, на сервере заполняйте его и отдавайте её уже сразу с этими данными. ...
Спасибо, stele, не все понял, но написанное понравилось. Обязательно запомню и вернусь к данной фразе.
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
14.02.2026, 12:32
Цитата Сообщение от 755 Посмотреть сообщение
Спасибо, stele, не все понял, но написанное понравилось.
Странно, что вы не знаете этого. Php именно для таких вещей и создавался, что бы по шаблону полностью сгенерировать страницу и передать браузеру. Когда еще не было в js всяких XMLHttpRequest и fetch.
Да и очень много сайтов, особенно всяких форумов (включая этот) так и работают по сей день.
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.02.2026, 12:57  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Странно, что вы не знаете этого. Php именно для таких вещей и создавался,
voraa, наверное все очень просто объясняется. Только сейчас начал писать конкретно сайт. Ранее же работал только с локальным сервером и мне хватало просто вывода на экран через echo. И когда изучал php по Никсону такой вывод мне у него не встретился либо до него не дошел. И до относительно недавнего времени не думал о серьезном программировании (чтобы написать сайт почти целиком) - просто хватало php на локалке для хранения и формирования каких-либо данных.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.02.2026, 12:57
Помогаю со студенческими работами здесь

Код 200 SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Ребята подскажите плиз, пытаюсь добавить форму отправки сообщений на сайт. После отправки выдает...

Постоянная ошибка SyntaxError: JSON.parse: unterminated string at line 1 column 132829 of the JSON data
что бы не делал, нормально в консоле JSON не выводит, нужно раз 20 обновить только тогда выведет...

SyntaxError: JSON.parse: unexpected character at line 2 column 5 of the JSON data
Здравствуйте. у меня есть простая задачка, которую никак не получается решить. Есть 2 файла в...

Ошибка "json.parse unexpected character"
Реализую на сайте систему комментариев. Добавление комментариев в базу происходит путём передачи...

Не работает JSON.parse, ошибка Unexpected token o
подскажите пожалуйста почему может не работать: var obj=JSON.parse (&lt;?=$Arrbankomat?&gt;); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru