2012-09-25 8 views
1

У меня есть метод, который я тестирую прямо сейчас для скрытия javascript, чтобы пользователь не мог искать его в исходных файлах.javascript hiding eval

Метод заключается в следующем:

  1. У вас есть куча файлов JavaScript включены, чтобы сделать вашу работу приложения. Библиотеки, такие как jQuery, dojo и собственный код. Это довольно стандартный.

  2. Существует один критический фрагмент кода javascript, без которого приложение не будет функционировать, и любой любопытный пользователь не сможет делать головы или хвосты приложения без него. Эта критическая часть не загружается тегами скриптов. Вместо этого небольшой ненавязчивый скрипт вызывает базу данных и возвращает javascript в большой длинной строке.

  3. Эта строка получает eval() - ed, чтобы сделать ее живым кодом. Но код динамически генерируется, поэтому он не будет отображаться, если пользователь просматривает исходный код или сохраняет веб-сайт. Кроме того, вы можете добавить какую-то соль или метку времени, чтобы пользователи не пытались обмануть базу данных, чтобы выявить ваше ядро ​​JavaScript.

Я пытаюсь получить обратную связь по этому вопросу со стороны сообщества, и большинство примеров я загнутыми для сокрытия JavaScript с серверным кодом только что люди хочет, чтобы включить файл .php в тегах вместо .js. Это совершенно другое.

Итак, у вас оно есть. Это хорошая идея? Какие недостатки?

+2

'eval' является злом, по крайней мере, в большинстве случаев. Также счастливая отладка с этим запутыванием кода. Это будет PITA, и в конце вы заметите, что еще есть способы разбить код бесплатно. Мне просто нужно посмотреть мои XHR, скопировать то, что я получаю, поместить в любую среду IDE и запустить инструмент, который правильно форматирует код. – clentfort

+0

eval is evil http://blogs.msdn.com/b/ericlippert/archive/2003/11/01/53329.aspx – ama2

+4

Если веб-браузер может его загрузить, любой может просмотреть его (например, вкладка firebug net) – Scuzzy

ответ

3

eval(), как правило, нахмурился, но, несмотря на это, большая слабость заключается в том, что я могу просто обнюхать HTTP-запросы и получить ваш скрипт. Обфускация может сделать это более неудобным, но с хорошим отладчиком его не так сложно отслеживать трассировку стека и получить хорошее представление о том, что происходит.

Даже если ресурс передается через SSL, его можно просмотреть и обработать, как только он был загружен браузером. Чтобы проверить это, я пошел на безопасный веб-сайт и рассмотрел необработанный ответ TCP (как синхронный, так и асинхронный с использованием XML HTTP) с использованием SmartSniff. Как и ожидалось, он зашифрован и нечитабелен. Тем не менее, одни и те же запросы отображаются как обычный текст в инспекторе сетевой активности Chrome.

+1

Не так (хотя этот ответ принят в другом месте) делает еще кое-что. – symcbean

+1

Ухаживать за разработкой? –

2

Трудно сделать Javascript-код нечитаемым человеком (и даже очень устойчивым к обратному проектированию) - и вам не нужно скрывать его в другом коде. Но почему? В общем случае, имя, присвоенное этому типу кода, - вредоносное ПО.