Как я могу запутать или сделать нечитаемыми мои файлы JavaScript? - PullRequest
15 голосов
/ 30 декабря 2011

В моем приложении есть сценарии JavaScript, содержащие функции JavaScript и jQuery.Все взаимодействие пользователя с моим приложением является динамическим, и оно передается приложению через jQuery.

Я понял, что когда я запускаю свое приложение на клиентской стороне, клиент может видеть весь исходный код, просматривая страницу.источник (Ctrl + U).

Как я могу скрыть или сделать что-то, чтобы пользователь не мог понять или прочитать источник?

Я хочу сделать что-то вроде того, что делает Facebook.Просматривая исходный код Facebook, пользователь не может повторно использовать его исходный код или даже понять его.

Я гуглил и обнаружил, что этот процесс называется запутыванием, но у меня это не работает.

Iпробовал это:

http://www.javascriptobfuscator.com/default.aspx

и

http://dean.edwards.name/packer/

и

http://www.daftlogic.com/projects-online-javascript-obfuscator.htm

Даже я пытался http://www.jasob.com/

Но это бесполезно для меня.

Ответы [ 3 ]

24 голосов
/ 30 декабря 2011

Если кто-то действительно заботится о вашем коде, он возьмет на себя всю работу по минимизации (замене random на полезные имена переменных / функций). Все остальное, такое как «шифрование» или упаковка - это просто змеиное масло , поскольку его можно легко перевернуть. Так что сэкономьте себе немного труда, а лучше потратьте его на то, чтобы сделать ваше приложение лучше.

Итак: единственное, что вы должны сделать в производственной системе, - это минимизировать код JS. Это делает его меньше и, следовательно, быстрее загружать - так что это действительно преимущество. Кроме того, это сделает его менее читаемым для людей, которым просто интересно посмотреть, но они не хотят тратить на это время.

Кстати, файлы Facebook JS просто уменьшены - скорее всего, только из-за пропускной способности / производительности.


Самый простой способ минимизировать ваш JavaScript - использовать для этого веб-сервис Google: http://closure -compiler.appspot.com / home
Обратите внимание, что он имеет ограничение в 1 МБ, поэтому, если ваш JS настолько велик, вам может понадобиться скачать минификатор на основе Java, чтобы запустить его локально.

2 голосов
/ 30 декабря 2011

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

0 голосов
/ 23 апреля 2015

Поскольку мне нужно минимизировать мой исходный код javascript, я ищу программу javascript, которая сама минимизирует любой код javascript.

Почему минификатор javascript?Потому что я пишу некоторый случайный код javascript с веб-сервера на клиент.

Я должен использовать «node.js» на веб-сервере, чтобы выполнить программу javascript, которая генерирует код javascript и минимизирует его наи отправьте его клиенту.

Эта программа на языке javascript является: программой шифрования и дешифрования.Результат кода javascript для клиента должен содержать функцию javascript, которая расшифровывает каждую часть json или шестнадцатеричной версии зашифрованных данных.Функция выполняет некоторые плюсы, минусы и умножения целых чисел.Иногда я могу создать условие (если, тогда и еще) для вычисления двух разных операций.Эта функция используется для дешифрования двух или более входных параметров.

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

И, чтобы убедить, что шифрование / дешифрование очень надежно, я добавляю для клиента табличные значенияпреобразование двух или более параметров;но табличные значения генерируются, фактически, функцией, написанной только для веб-сервера, и содержат некоторые числовые константы, которые НИКОГДА не отправляются клиенту.Таким образом, любой, чье желание расшифровать, должно иметь значение констант.

Мне объяснили этот процесс, потому что:

  1. вы получили некоторые сведения о запутывании в исходном коде javascriptкод;но обфускация в javascript еще не реализована веб-сервером и браузерами ... возможно, это может произойти ... но какие решения полезны с помощью "SSL-ize" для всех передач через Интернет.

  2. Возможно шифрование и дешифрование с помощью функций шифрования / дешифрования, которые могут быть читаемы.И без стоимости SSL-сертификатов.Даже «человек посередине» расшифровывает зашифрованные данные;для этого ему просто нужно выполнить функцию javascript.Хорошо ... но представьте, что функция дешифрования javascript также зашифрована ... тогда "человек посередине" должен выполнить функцию дешифрования, а затем снова дешифровать дешифрованный контент, являющийся функцией javascript для дешифрования зашифрованных данных.

И представьте, если веб-сервер задает вопрос клиенту, а уникальный ответ обрабатывается вычислением результата клиента (чей не был отправлен через Интернет) ... это невозможно для человекав середине ", чтобы получить ответ.

Проверьте мою идею;я жду комментариев от кого-либо.

...