Безопасность скрипта
Привет.
Почитал в инете как "скрывать" свой JS код от подсматривания логики. Самый распространенный совет - модифицировать в "нечитаемый". Но это все равно не спасение. Скажите если использовать следующую цепочку будет примерно нормально? 1) Грузится основной код (классы-прототипы) 2) Страница загрузилась 3) по onload делается Ajax запрос где приходит строка кода инициализации и ее направляем на eval() 4) финальная работа скрипта Вот эту строку получить "хакеру-копировщику" легко? Может другая цепочка. Спасибо за ответ и за полезную ссылочку. P.S. Ресурс допустим вообще не подразумевает работы без JS (игры) |
Цитата:
|
Ну и самое простое - посмотреть запросы в фаербаге :)
|
защитить свой код наверняка, в принципе невозможно
если кто-то задастся целью его получить, то он его получит |
micscr, скрывать код нереально, забудьте об этом
|
Цитата:
Чтобы пришлось помучиться немного - сразу желающих уменьшится. А то, что тот кто умеет посмотрит - знаю. |
YUI Compressor
|
Хочу скрыть от FireBug глобальную функцию, получаемую аяксом. Делаю так:
var s = 'window.probeg = ' + r; try { eval(s); } catch(e) { } window.probeg.toString = function(){return '';}; В консоли FireBug вроде нормально, т.е. пустую строку alert(window.probeg) покажет. Этого достаточно, или еще как функции можно просматривать? Сразу скажу, что текст самой функции если смотреть на вкладке сеть (аякс запросы) в FireBug - зашифрован. |
toSource
|
Цитата:
|
JSON.stringify(probeg)
|
Цитата:
Ввожу в консоль alert(JSON.stringify(probeg)) выдает - undefined. |
Ну если probeg -- функция, то будет undefined.
|
micscr,
имеет смысл выводить не пустую строку, а кусок обсфуцированного ложного кода |
Ммм... А если так?
// Declaration function hidden_func(){ console.info("Answer: 42"); } // Hide me hidden_func.toString = hidden_func.toSource = function(){ return "Go away!" } // Nice alert(hidden_func); alert(hidden_func.toString()); alert(hidden_func.toSource(1)); // Shit! alert(Function.prototype.toString.call(hidden_func)); Function.prototype.toSource && alert(Function.prototype.toSource.call(hidden_func, 1)); |
Цитата:
например, можно сохранить старый toString и вызывать его не для всех функций не из списка защищаемых, для того чтобы сохранить функциональность старого toString в ином случае, вообще не заморачиваться PS а почему вы вызываете toSource с параметром? ранее такого не видел |
|
Да, как-то так с прототипом и стоит поступить.
PS Чтобы отступы красивые были :) Если уже смотреть сорс, то форматированный, а не как кошка лапой :) |
Я смотрю, что лучше всего не использовать в таком случае глобальную функцию, а спрятать например в замыкании?
Данные из замыкания вроде же нельзя так просматривать, т.к. нет извне ссылки никакой ? Правда ложную ветку в алгоритме придется добавить. Цитата:
p.s. Мотив мучений - не получил недавно последний платеж за работу. Их устроил обфусцированный вариант. Т.е. надо чтобы демка без сервера не работала. |
Цитата:
|
Цитата:
если что не так, то арбитражка соответствующей системы и отрицательный отзыв. как правило многие дорожат своими WMID, и акками на бирже(если конечно это не свежезареганный) меня за два года "кинули" два раза что-то на 30$ PS а вообще для более-менее сложного проекта дешевле будет получить деобсфуцированный вариант, если захотят кинуть |
Та это я диплом человеку писал. Брал поэтапно. Сделал часть, продемонстрировал, он оплатил. Последний этап (15$) - он все потестит, я поисправляю и попрощаемся. Он исчез - а зря, нужно было толковей потестить :) .
|
поэтапная работа не отменяет протекцию
|
Часовой пояс GMT +3, время: 21:06. |