13.05.2012, 10:37
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от FINoM
|
А почему не просто eval(data)? Ну или хотя-бы window.eval.call(window,data), почему eval — строка?
|
Почти все обфускаторы впадают в коматоз, когда видят eval. Так его прячут от обфускатора, заведомо зная, что eval ничего не сломает в обфусцированном коде.
|
|
13.05.2012, 10:46
|
|
⊞ Развернуть
|
|
Регистрация: 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.05.2012, 11:23
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от B@rmaley.e><e
|
Есть приложение, получающее откуда-нибудь JSON. И парсится этот JSON не с помощью JSON.parse, а с помощью eval'а.
|
Не давайте детям в руки оголенные провода под напряжением. А если они уже взяли, то им ничем не поможешь.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
13.05.2012, 12:26
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от B@rmaley.e><e
|
Смотря где и как его использовать. Пример:
|
Соглашусь с Gozar, никакой отказ от использования eval не спасет от криворукого программиста, да и вообще от кривых рук и головы.
|
|
13.05.2012, 12:34
|
что-то знаю
|
|
Регистрация: 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\./, '');@*/
потому что обфускатор вырезает этот код, так как считает его обычным комментарием.
|
|
13.05.2012, 13:35
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от devote
|
не знаю каким вы пользуетесь обфускатором, но я пользуюсь Closure Compiler и что-то ни разу не видел что бы он плюнул в ответ на то что я где то пихну eval, хотя часто юзаю такую конструкцию:
|
Слово "почти" видишь в процитированном сообщении?
|
|
13.05.2012, 13:39
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от Kolyaj
|
Слово "почти" видишь в процитированном сообщении?
|
до этого пользовался яховским тоже не замечал трудностей... возможно пакеры его не любят, так как сами любят его использовать. Их я не юзал.
|
|
13.05.2012, 13:50
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Вот яховский абсолютно точно переставал сжимать. Может быть в каком-то режиме. Он не ругался, он просто не сжимал ту часть, куда мог залезть eval.
|
|
30.09.2012, 11:40
|
Интересующийся
|
|
Регистрация: 31.08.2012
Сообщений: 12
|
|
...
Последний раз редактировалось karnas, 30.09.2012 в 22:51.
|
|
30.09.2012, 13:50
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
karnas,
Покажи мне место в твоем скрипте где есть evalHTML.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
|
|