Скрыть js код в браузере
Можно ли скрыть код Javascript из html веб-страницы, когда исходный код просматривается через функцию просмотра исходного кода в браузерах?
Я знаю, что код можно скрыть, но я бы предпочел, чтобы он был скрыт от функции исходного кода.
он на стороне клиента, и поэтому он будет находиться на всех клиентах (браузерах) Зачем вам скрывать Javascript? Не похоже, чтобы вы когда-либо помещали какие-либо конфиденциальные данные, которые вы не хотите, чтобы пользователь нашел в них . Верно ?! У @PaulPRO есть хороший аргумент - зачем вам скрывать JavaScript? Любой, кто хочет знать, что вы делаете, ВСЕГДА сможет получить ваш скрипт несколькими нажатиями клавиш. Они не будут полагаться только на View-Source. Тот, кто не знает, как получить сценарий, скорее всего, не заинтересуется им.Я не уверен, что кто-то еще действительно адресовал ваш вопрос напрямую, который представляет собой код, просматриваемый с помощью команды просмотра исходного кода браузера.
Как уже говорили другие, нет способа защитить javascript, предназначенный для запуска в браузере, от определенного зрителя. Если браузер может его запустить, то любой решительный человек может его просмотреть / запустить.
Но если вы поместите свой javascript во внешний файл javascript, который включен в:
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
теги, то код javascript не будет сразу виден с помощью команды View Source - таким образом будет виден только сам тег script. Это не означает, что кто-то не может просто загрузить этот внешний файл javascript, чтобы увидеть его, но вы спросили, как уберечь его от команды просмотра исходного кода браузера, и это сделает это.
Если вы действительно хотите усложнить просмотр исходного кода, вы должны сделать все следующее:
- Поместите его во внешний файл .js.
- Обфускируйте файл, чтобы большинство имен собственных переменных были заменены короткими версиями, чтобы все ненужные пробелы были удалены, чтобы его нельзя было прочитать без дальнейшей обработки и т. Д.
- Динамически включайте файл .js, программно добавляя теги сценария (как это делает Google Analytics). Это еще больше затруднит доступ к исходному коду с помощью команды «Просмотр исходного кода», так как там будет нелегко щелкнуть ссылку.
- Поместите как можно больше интересной логики, которую вы хотите защитить, на сервере, который вы получаете через вызовы ajax, а не выполняете локальную обработку.
С учетом всего сказанного, я думаю, вам следует сосредоточиться на производительности, надежности и улучшении своего приложения. Если вам абсолютно необходимо защитить какой-то алгоритм, поместите его на сервер, но в остальном соревнуйтесь за то, чтобы быть лучшим в своих силах, а не за наличие секретов. В конечном итоге именно так в Интернете работает успех.
Давайте представим ситуацию, когда вы и ваша команда пишете интересный и сложный код на JavaScript. Причём этот код в кратчайшие сроки нужно использовать в проекте. Если его функциональность действительно уникальна, то в процессе разработки и у вас, и у членов команды вполне резонно возникнет вопрос: «Как защитить код от копирования?».
Как защитить код: веб-сокеты, крипторы и обфускация
Разумеется, все мы прекрасно понимаем, что JavaScript выполняется на стороне браузера. И любой зашифрованный код всегда можно расшифровать, если знать принципы работы браузера. Поэтому можно попробовать лишь затруднить понимание данного кода, а это, в свою очередь, очень сильно помешает злоумышленнику модифицировать его под свои нужды.
Итак, есть несколько вариантов защиты кода:
- Использовать веб-сокеты.
- Использовать крипторы.
- Сделать обфускацию кода.
Крипторы приводят код в нечитаемый вид, используя, как правило, base64 (что неизбежно приводит к увеличению объёма кода примерно на 30%). Затем к полученному результату прибавляется так называемая «соль» — набор символов, который при разборе кода функцией-дешифровщиком используется в качестве ключа. Ну а потом вся строка кода обычно выполняется через eval(). Проблема крипторов в том, что если понять принцип их работы, отсечь «соль» и декодировать, то сразу становится доступен весь код в его исходном виде.
Применение обфускаторов сильно усложняет дальнейшую отладку кода, поскольку это необратимый процесс. К тому же в некоторых случаях они могут повлиять на функциональность кода. Попробовать обфускаторы можно на любом сервисе обфускации, к примеру этом или этом. Также в Сети можно найти платные крипторы-обфускаторы, в настройках которых вы сможете указывать степень защиты, время жизни скрипта и прочее, при этом скрипт будет намертво привязан к вашему домену, т.е. для дешифровки будет использоваться уникальное для вашего хоста значение. Стоимость таких крипторов начинается от 45 $. Кроме этого, перед обфускацией вы можете предварительно минимизировать код, заменив все имена переменных и функций на их односимвольные синонимы. Отличный и очень популярный инструмент на Node.js — UglifyJS, который работает как в автоматическом режиме (скажем, через Gulp), так и в режиме командной строки.
3–5 декабря, Онлайн, Беcплатно
Также есть всем известный Closure Compiler от Google, который кроме минимизации анализирует JavaScript-код, удаляет мёртвый код, переписывает и сводит к минимуму то, что осталось. Он также проверяет синтаксис, ссылки на переменные и типы и предупреждает об общих ошибках JavaScript. Имеет хорошо документированный API.
Кроме предложенных методов можно сделать следующее:
Всё это, разумеется, не станет стопроцентной защитой. Тем не менее чем сложнее процесс дешифровки, тем больше шансов, что после множества неудачных попыток любители копировать чужой код оставят ваш сайт в покое.
Зашифровка кода на примере JavaScript-калькулятора
Не так давно я разработал JavaScript-калькулятор для расчёта стоимости услуг, с большим количеством взаимосвязанных параметров. Руководство поставило задачу защитить данный скрипт от копирования, чтобы конкуренты не смогли использовать его на своих сайтах. Искал различные решения, ничего подходящего не нашёл, поэтому начал писать собственное. Представляю его ниже.
Обращаю ваше внимание на то, что любой код можно расшифровать, просто для этого нужно время. Поэтому данное решение, разумеется, не идеально. Тем не менее, чтобы его раскрыть, требуется время, внимательность и усидчивость. И это может оттолкнуть ваших конкурентов от идеи скопировать ваш скрипт. Большинство из них после нескольких неудачных попыток просто будут искать аналог похожего скрипта на других ресурсах.
По итогам работ в браузере вы увидите нечто такое:
При этом все зашифрованные скрипты будут работать корректно. Опытный взгляд программиста сразу визуально определит кодирование через base64. Но при попытке расшифровать строку любым base64 декодером, будет ошибка. Если вставить скрипт в alert (такой метод также рекомендуют на форумах для дешифровки кода), то результат также будет нулевым.
При этом никто ведь не знает, что здесь зашифрован именно скрипт. Это может оказаться какой-то параметр, текст или изображение. Через base64 можно зашифровать всё что угодно.
Поищем в коде функцию glob() , которой передаётся шифрованная строка. Вот она: glob=function(s) Видим ещё несколько функций sfd() и rty() . Ищем эти функции. Вот они: На этом месте многие закончат попытки расшифровки и оставят ваш сайт в покое. Рассмотрим алгоритм подробнее. Первым делом указываем в футере сайта путь на скрипт и тут же кодируем его: Затем где-то дальше в коде вызываем скрипт: Пусть этот скрипт вызывается отдельно, подальше от других скриптов и ссылок на скрипты. Далее где-то в файле с общими скриптами сайта, отдельно от других скриптов, вставляем вызов функций дешифровки. Вставлять можно независимо от других функций и библиотек. Разбираем подробно что здесь происходит. Наша основная функция glob() принимает один параметр s . Он сразу передаётся функции substring() с параметром - [] (это равно 1 в зашифрованном виде), которая извлекает из s строку начиная с первого символа и до конца. Следовательно, если мы в PHP-коде в качестве строки прибавляли более одного символа, скажем три, то нам нужно будет в функции substring() указать 2+(- Пример замены цифр через побитовый операторКак защитить JavaScript от копирования на своём сайте
-1 можно заменить на
Далее полученный результат принимает функция rty() . Эта функция представляет собой набор символов, в частности: this["\x61\x74\x6F\x62"] ;
Попробуйте ввести это в консоли браузера и вы увидите, что на самом деле делает эта функция. Например, вы увидите:
Т.е. набор символов — это зашифрованная функция atob() , которая, согласно описанию на MDN, декодирует строку, закодированную с использованием base64.
Результат декодирования получает функция sfd() . Она также представляет собой набор символов: this["\x65\x76\x61\x6C"]; .
Вы уже догадались, что нужно сделать? 🙂 Выполните в консоли браузера и вы увидите:
Здесь, думаю, уже объяснять ничего не надо. Все мы знаем, что функция eval() выполняет скрипт, полученный из строки. «Плохая практика», как сказали бы многие, для обычного кода, но в нашем случае это безопасная и нужная функция для реализации нашей идеи. К тому же напрямую к этой функции пользователь не сможет получить доступ.
Наверное, вы задались вопросом, а каким же образом функции зашифрованы в наборе символов? Очень просто: набор символов — это текст, преобразованный в шестнадцатеричную систему счисления. Т.е. это текст в формате hex (hexadecimal), в котором можно зашифровать любые символы.
Таким образом, наша расшифрованная функция выглядит так (специально разбил по строчкам, чтобы было наглядно):
В итоге отбрасываем первый символ шифрованной строки (при этом символов может быть хоть 353, и об этом никто не сможет быстро догадаться), потом дешифруем, потом выполняем через eval() .
Всё будет работать как и раньше, но собьёт с толку нехороших копипастеров.
Есть ли способы сокрытия JavaScript-кода на WEB-страницах ?
Как именно скрыть я не подскажу, но возможно вам нужно отделить нужную часть кода и перенести ее на сервер, а легковесный скрипт оставить на странице и общаться с сервером по AJAX?
JavaScript должен выполнять бразуер - поэтому скрыть его в принципе нельзя. Можно минимизировать - это снизит понятность кода, но он все равно будет открыт.
По хорошему то, что не нужно видеть пользователям - нужно выполнять на сервере.
В любом случае браузер должен выполнять нешифрованный код, значит злоумышленник (грамотный) 100% его сможет увидеть, если захочет.
Ну Js особой опасности при изменении не несет. Самое страшное, что можно сделать базовым JS - стырить кукисы =)Попробуйте какой-нибудь обфускатор JavaScript, конкретную прогу рекомендовать не буду, в интернете полно информации по этому поводу.
864 2 2 золотых знака 12 12 серебряных знаков 27 27 бронзовых знаков Если выполняемый код действительно имеет такую важность, то лучше его выполнять на сервере. Потраченное время на обфускацию может себя не оправдать. КЛАСС! И где вы раньше только были с этим обфускатором !?JS выполняется браузером - поэтому адекватных способов скрыть нет (кроме какой-нибудь кодировки - но это уже на уровне маразма, имхо).
Вы ищите как скрыть, я ищу того кому бы это было нужно :)))))
В принципе, конечно, скрыть то, что передано в браузер нельзя, но практически можно.
Есть ли способы сокрытия JavaScript-кода на WEB-страницах ?
Есть способы сокрытия JavaScript-кода на WEB-страницах .
И как им пользоваться. Там только написано, что возможно. вот сделать бы так, как они говорят.Для защиты от простого копирования исходника лучше всего использовать обфускатор (вот, кстати, тоже неплохой сервис). Причём можно встроить в шифруемый скрипт проверку location.href. А пытаться защитить код от профессионалов бессмысленно. Сейчас (исключительно ради научного интереса =)) посмотрел сервис, который предлагал Van. Достал код страницы регистрации минуты за две, что ещё раз подтверждает, что полностью скрыть код невозможно.
Ну да =) Все, уже все выясниось. вопрос можно закрывать.Можно ли скрыть код Javascript от html веб-страницы, когда исходный код просматривается с помощью функции просмотра исходного кода в браузерах?
Я знаю, что код можно запутать, но я бы предпочел, чтобы он был скрытым от функции просмотра исходного кода.
Я не уверен, что кто-то еще непосредственно обратился к вашему вопросу, а именно к коду, просматриваемому из команды просмотра исходного кода браузера.
Как уже говорили другие, нет способа защитить javascript, предназначенный для запуска в браузере, от определенного зрителя. Если браузер может запустить его, то любой определенный человек также может просмотреть / запустить его.
Но, если вы поместите свой javascript во внешний файл javascript, который включен в:
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
Тэги, тогда код javascript не будет сразу виден с помощью команды View Source - таким образом будет виден только сам тэг скрипта. Это не значит, что кто-то не может просто загрузить этот внешний файл javascript, чтобы увидеть его, но вы спросили, как не допустить его в команду просмотра исходного кода браузера, и это будет сделано.
Если вы действительно хотите, чтобы просмотр исходного кода был более трудоемким, вы бы сделали все следующее:
- Поместите это во внешний файл .js.
- Запутайте файл, чтобы большинство имен собственных переменных были заменены короткими версиями, чтобы удалить все ненужные пробелы, чтобы его нельзя было прочитать без дальнейшей обработки и т. Д.
- Динамически включайте файл .js, программно добавляя теги скрипта (как это делает Google Analytics). Это усложнит доступ к исходному коду с помощью команды «Просмотреть исходный код», поскольку там не будет простой ссылки.
- Добавьте столько интересной логики, которую вы хотите защитить, на сервер, который вы получаете с помощью вызовов ajax, чем выполняйте локальную обработку.
Учитывая все вышесказанное, я думаю, что вы должны сосредоточиться на производительности, надежности и совершенствовании своего приложения. Если вам абсолютно необходимо защитить какой-либо алгоритм, поместите его на сервер, но, кроме этого, соревнуйтесь за то, чтобы быть лучшим в своем деле, а не располагать секретами. В конечном счете, именно так все и работает в Интернете.
Мое решение вдохновлено последним комментарием. Это код invisible.html
Чистый код invisible_debut.js:
Обратите внимание, что в конце я удаляю созданный скрипт. invisible.js - это:
Invisible.js не появляется в консоли, потому что он был удален, и никогда в исходном коде, потому что создан javascript.
Что касается invisible_debut.js, я запутал его, что означает, что очень трудно найти URL invisible.js. Не идеально, но достаточно усердно для нормального хакера.
Я думаю, что нашел решение, чтобы скрыть определенные коды JavaScript в исходном представлении браузера. Но вы должны использовать jQuery для этого.
В вашем index.php
Вы загружаете файл в теле html / php, вызываемый функцией jquery в файле js.js.
В вашем файле content.php поместите еще один тег head, а затем вызовите другой файл js.
В файле js2.js создайте любую функцию, которую вы хотите.
Пожалуйста, перейдите по ссылке, затем скопируйте и вставьте ее в имя файла jquery.js
Надеюсь, это поможет.
Вы могли бы использовать document.write .
Без jQuery
Или с помощью jQuery
Используйте Html Encrypter Часть головы, которая имеет
HTML ENCRYPTER Примечание: если у вас есть java-скрипт на вашей странице, попробуйте выполнить экспорт в файл .js и сделайте его как в примере выше.
А также этот Encrypter не всегда работает в каком-то коде, который испортит ваш сайт . Выберите лучшую часть, которую вы хотите скрыть, например, в <form> </form>
Это может быть изменено продвинутым пользователем, но не все нубы, как я, знают это.
Надеюсь, это поможет
Я не уверен, что есть способ скрыть эту информацию. Неважно, что вы делаете, чтобы скрыть или скрыть то, что вы делаете в JavaScript, все равно все сводится к тому, что ваш браузер должен загрузить его, чтобы использовать его. Современные браузеры имеют встроенные инструменты веб-отладки / анализа, которые упрощают извлечение и просмотр сценариев (например, просто нажмите F12 в Chrome).
Если вы беспокоитесь о раскрытии какой-либо коммерческой тайны или алгоритма, то единственным выходом для вас является инкапсуляция этой логики в вызов веб-службы, и ваша страница должна вызывать эту функцию через AJAX.
Подход, который я использовал несколько лет назад -
Нам нужен jsp-файл, java-файл сервлета и java-файл фильтра.
Предоставить пользователю доступ к файлу jsp. Тип пользователя URL-адрес файла JSP.
Случай 1 -
- Файл JSP перенаправит пользователя в сервлет.
- Сервлет выполнит часть основного скрипта, встроенную в файл xxxxx.js, и
Используя Printwriter, он выдаст ответ пользователю.
Тем временем Servlet создаст ключевой файл.
Когда сервлет пытается выполнить файл xxxx.js внутри него, фильтр
активирует и обнаружит наличие файла ключа и, следовательно, удалит ключ
файл .
Таким образом, один цикл окончен.
Короче говоря, файл ключа будет создан сервером и будет немедленно удален фильтром.
Это будет происходить при каждом ударе.
Случай 2 -
- Если пользователь попытается получить исходный код страницы и непосредственно щелкнет файл xxxxxxx.js, фильтр обнаружит, что файл ключа не существует.
- Это означает, что запрос не пришел ни от одного сервлета. Следовательно, он заблокирует цепочку запросов.
Вместо создания файла можно использовать значение настройки в переменной сеанса.
Единственный способ - обфусцировать javascript или минимизировать ваш javascript, что затрудняет конечному пользователю обратный инжиниринг. однако, это не невозможно перепроектировать.
Нет, это невозможно.
Если вы не отдадите его браузеру, значит, в браузере его нет.
Если вы это сделаете, то он (или легко прослеживаемая ссылка на него) является частью источника.
можно ли скрыть код Javascript из html веб-страницы, когда исходный код просматривается через функцию просмотра исходного кода браузерами?
Я знаю, что можно запутать код, но я предпочел бы быть скрытый из функции источника просмотра.
Я не уверен, что кто-то еще на самом деле обратился к вашему вопросу напрямую, который просматривается из команды View Source браузера.
Как уже говорили другие, невозможно защитить javascript, предназначенный для запуска в браузере, от определенного средства просмотра. Если браузер может запустить его, то любой определенный человек может просмотреть/запустить его также.
но, если вы поместите свой javascript во внешний файл javascript, который входит в комплект:
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
теги, тогда код javascript не будет сразу виден с помощью команды View Source - таким образом будет виден только сам тег скрипта. Это не означает, что кто-то не может просто загрузить этот внешний файл javascript, чтобы увидеть его, но вы спросили, как сохранить его из исходной команды просмотра браузера, и это сделает это.
Если бы вы действительно хотели сделать больше работы для просмотра источника, вы бы сделали все следующее:
- положите его в внешний.файл js.
- запутать файл так, что большинство имен собственных переменных заменяются короткими версиями, так что все ненужные пробелы удаляются, поэтому его нельзя прочитать без дальнейшей обработки и т. д.
- динамически включать .JS-файл, программно добавляя теги скриптов (например, Google Analytics). Это еще больше затруднит доступ к исходному коду из команды View Source, так как не будет простой ссылки для нажатия там.
- поместите столько интересной логики, которую вы хотите защитить на сервере, который вы получаете через ajax-вызовы, а не локальную обработку.
со всем сказанным, я думаю, вы должны сосредоточиться на производительности, надежности и сделать ваше приложение отличным. Если вам абсолютно необходимо защитить какой-то алгоритм, поместите его на сервер, но кроме этого, соревнуйтесь в том, что вы лучший, не имея секретов. Вот, в конечном счете, как успех работает в интернете в любом случае.
нет, это невозможно.
Если вы не даете его браузеру, то браузер не имеет его.
Если вы это сделаете, то он (или легко следовать ссылка на него) является частью источника.
используйте Html Encrypter часть головы, которая имеет
HTML-КОД УТИЛИТА Примечание: если у вас Java-скрипт в вашу страницу пытаются экспортировать .JS-файл и сделайте его похожим на приведенный выше пример.
а также Этот шифратор не всегда работает в каком-то коде, который сделает сайт ur испорченным. Выберите лучшую часть, которую вы хотите скрыть, например, в <form> </form>
Это может быть обратным предварительным пользователем, но не все noob, как я, знает это.
надеюсь, это поможет
мое решение вдохновлено последним комментарием. Это код невидимости.HTML-код
четкий код invisible_debut.js is:
обратите внимание, что в конце я удаляю созданный сценарий. невидимый.js is:
невидимым.js не отображается в консоли, потому что он был удален и никогда в исходном коде, потому что создан javascript.
о invisible_debut.Джей-Эс, я запутал это, что значит что очень сложно найти url невидимой.js. Не идеально, но достаточно сложно для обычного хакера.
Я не уверен, что есть способ, чтобы скрыть эту информацию. Независимо от того, что вы делаете, чтобы запутать или скрыть все, что вы делаете в JavaScript, это все равно сводится к тому, что ваш браузер должен загрузить его, чтобы использовать его. Современные браузеры имеют инструменты веб-отладки / анализа из коробки, которые делают извлечение и просмотр скриптов тривиальными (просто нажмите F12 в Chrome, например).
Если вы беспокоитесь о разоблачении какой-то коммерческой тайны или алгоритма, то ваш единственный способ-инкапсулировать эту логику в вызов веб-службы и заставить вашу страницу вызывать эту функциональность через AJAX.
Читайте также: