Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 13.05.2012, 10:37
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от FINoM
А почему не просто eval(data)? Ну или хотя-бы window.eval.call(window,data), почему eval — строка?
Почти все обфускаторы впадают в коматоз, когда видят eval. Так его прячут от обфускатора, заведомо зная, что eval ничего не сломает в обфусцированном коде.
Ответить с цитированием
  #12 (permalink)  
Старый 13.05.2012, 10:46
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от melky
Ну, раз все согласились его избегать, значит, стоит его избегать.
Избегать eval путём использования new Function? И какой смысл тогда в этом?
Сообщение от http://www.jslint.com/lint.html
eval is evil

The eval function (and its relatives, Function, setTimeout, and setInterval) provide access to the JavaScript compiler. This is sometimes necessary, but in most cases it indicates the presence of extremely bad coding. The eval function is the most misused feature of JavaScript.
Сообщение от devote
На стороне клиента евал опасен так же как и alert. То-есть нанести ущерб клиенту на компе не реально.
Смотря где и как его использовать. Пример:
Есть приложение, получающее откуда-нибудь JSON. И парсится этот JSON не с помощью JSON.parse, а с помощью eval'а. Тогда злоумышленник, получив доступ к скрипту, отдающему этот JSON, может вернуть что-нибудь вроде
(function () {
	/* some code stealing your cookie */
}(), { /*some json data*/ })
Сообщение от FINoM
А почему не просто eval(data)?
Тогда контекст будет захвачен.
(function(){
  var a = 5;
  eval("alert(typeof a)");
  window.eval("alert(typeof a)");
})()
Ответить с цитированием
  #13 (permalink)  
Старый 13.05.2012, 11:23
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от B@rmaley.e><e
Есть приложение, получающее откуда-нибудь JSON. И парсится этот JSON не с помощью JSON.parse, а с помощью eval'а.
Не давайте детям в руки оголенные провода под напряжением. А если они уже взяли, то им ничем не поможешь.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #14 (permalink)  
Старый 13.05.2012, 12:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от B@rmaley.e><e
Смотря где и как его использовать. Пример:
Соглашусь с Gozar, никакой отказ от использования eval не спасет от криворукого программиста, да и вообще от кривых рук и головы.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #15 (permalink)  
Старый 13.05.2012, 12:34
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Kolyaj
Почти все обфускаторы впадают в коматоз, когда видят eval. Так его прячут от обфускатора, заведомо зная, что eval ничего не сломает в обфусцированном коде.
не знаю каким вы пользуетесь обфускатором, но я пользуюсь Closure Compiler и что-то ни разу не видел что бы он плюнул в ответ на то что я где то пихну eval, хотя часто юзаю такую конструкцию:
var msie = eval("/*@cc_on (@_jscript_version+'').replace(/\\d\\./, '');@*/");
почему не юзаю так:
var msie = /*@cc_on (@_jscript_version+'').replace(/\d\./, '');@*/
потому что обфускатор вырезает этот код, так как считает его обычным комментарием.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #16 (permalink)  
Старый 13.05.2012, 13:35
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от devote
не знаю каким вы пользуетесь обфускатором, но я пользуюсь Closure Compiler и что-то ни разу не видел что бы он плюнул в ответ на то что я где то пихну eval, хотя часто юзаю такую конструкцию:
Слово "почти" видишь в процитированном сообщении?
Ответить с цитированием
  #17 (permalink)  
Старый 13.05.2012, 13:39
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Kolyaj
Слово "почти" видишь в процитированном сообщении?
до этого пользовался яховским тоже не замечал трудностей... возможно пакеры его не любят, так как сами любят его использовать. Их я не юзал.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #18 (permalink)  
Старый 13.05.2012, 13:50
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Вот яховский абсолютно точно переставал сжимать. Может быть в каком-то режиме. Он не ругался, он просто не сжимал ту часть, куда мог залезть eval.
Ответить с цитированием
  #19 (permalink)  
Старый 30.09.2012, 11:40
Интересующийся
Отправить личное сообщение для karnas Посмотреть профиль Найти все сообщения от karnas
 
Регистрация: 31.08.2012
Сообщений: 12

...

Последний раз редактировалось karnas, 30.09.2012 в 22:51.
Ответить с цитированием
  #20 (permalink)  
Старый 30.09.2012, 13:50
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

karnas,
Покажи мне место в твоем скрипте где есть evalHTML.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск