Подтвердить что ты не робот

Какой лучший способ защитить собственный HTML/CSS/JavaScript?

Я пишу надежный, масштабируемый и довольно сложный механизм веб-сайта с использованием HTMl, CSS и JavaScript. Я не хочу, чтобы он был сорван, и мне интересно, есть ли способ защитить источник от просмотра на клиенте.

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

4b9b3361

Ответ 1

Независимо от того, как вы запутываете код, каждый может реплицировать то, что вы делаете, только видя его. Может потребоваться немного больше времени, чтобы написать его с нуля, но вы не можете сделать этого.

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

Как правило, значение в вашем приложении действительно будет в области поддержки. Другими словами, люди будут покупать его, если почувствуют, что вы будете достаточно долго, чтобы поддержать его. Помните об этом, когда вы его оцениваете.

Вы обнаружите, что будут некоторые, которые просто украдут ваш код и повторно его используют. Не беспокойтесь слишком много о них, так как они не собирались платить клиентам. Вместо этого упростите своим покупателям возможность покупать и использовать ваши вещи. Убедитесь, что вы оказываете поддержку; что там будет реальное значение.

Ответ 2

Сделайте все наоборот, отпустите свой код как open source с лицензией MIT/GPL. Прикрепите свое (деловое) имя к коду и будьте известным как первое, чтобы создать приложение X. Репутация дает вам гораздо больше дальнейших тщетных попыток "защитить ваш код".

  • JS/Html/CSS обычно довольно прост в обратном проектировании, им вообще не нужно смотреть на свой код.
  • Скорее всего, ваши JOS-инновации уже существуют и были написаны в 2001 году кем-то другим.
  • Чем сложнее код, тем сложнее украсть интеллектуальную собственность, особенно если вы открываете его.

На самом деле нет разумной причины защитить ваш код, где JS/CSS/HTML, лучшее, что вы можете сделать, это защитить свою бизнес-логику, сохранив ее на сервере.

В качестве примера я мог бы написать свою собственную реализацию CKEditor (многие люди делают именно это), но лучше всего использовать CKEditor, и все знают, что это такое, кто написал и т.д.

Или возьмите карты Google в качестве примера, есть много клонов, но есть только одна реальная карта Google. Heck, другие написали реализацию карт перед Google, но карты google более известны.

Я мог бы продолжить множество примеров, почему пытается защитить ваш код не только глупо, но и не очень умный... Защита бизнес-логики - это одно, но на самом деле у вас есть больше возможностей для получения публиковаться с фальшивым кодом фэнтезийной смайли...

Ответ 3

Нет, вы не можете этого сделать.

Все будет в браузере (клиенте). Вы можете запутать uglify, minify или еще что-то с ним, но в конце это легко выстрелить, чтобы снова "зашифровать".

Вы также не можете скрыть это, потому что вы хотите, чтобы браузер получал все ваши источники. Так что даже если вы делаете какой-то фанковый ход, например, "загружая javascript с динамической вставкой тега script и удаляйте теги script". Хорошо, что может работать для некоторых неопытных пользователей, но с помощью инструмента, такого как Fiddler, снова покажет правду.

Ответ 4

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

Ответ 5

Хорошо, популярный ответ будет "не помещать его в Интернете". Тем не менее, вы можете обмануть свой javascript настолько, что, как правило, никто не будет воровать его. Удаление имен функций и переменных и т.п. Проходит долгий путь. Как правило, легче начать с нуля.

Ответ 6

Вы можете либо не поместить его в Интернет, либо сохранить его доступным только через интрасеть; но нет способа надежно предотвратить доступ клиента к html/css/JS, не мешая им получить доступ к самому сайту.

Obfuscation будет предотвращать случайные попытки и просмотр любопытства, но не будет препятствовать определенному атакующему/браузеру, поскольку все это реализовано на стороне клиента.

Ответ 7

Минимизация HTML, CSS и JavaScript поможет немного, но люди всегда могут переформатировать их. Лучше всего, если содержимое, отправленное клиентам, не совпадает с содержимым, с которым вы работаете.

Этого можно достичь:

  • создание вашего HTML из некоторой структуры
  • создание вашего CSS с помощью SASS/LESS и т.д.
  • с использованием компилятора JavaScript на ваших скриптах (т.е. Google Closure Compiler)

Однако, со всеми этими, есть только до сих пор, что вы можете пойти. Компиляция вашего JavaScript затруднит выполнение ваших первоначальных намерений, но, вероятно, не так сложно, если кто-то решит его перепроектировать.

Ответ 8

Вы можете использовать обфускатор JavaScript. Это затруднит чтение кода. Они все еще могут "разорвать его", но было бы очень трудно понять его и, следовательно, изменить его. Невозможно полностью скрыть код.

Ответ 9

Я много думал об этой проблеме и, честно говоря, мало что можно сделать. Лучшее, что я когда-либо встречал, - это использовать компилятор JS.

Теоретически, и я никогда не делал этого, но я знаю, что это возможно, возможно, будет возможно загрузить js через 1x1 пиксель swf, который, в свою очередь, отправляется через скремблер. По-прежнему можно обойти это, но это становится намного более раздражающим. Затем вы сможете отправить зашифрованный код aes через swf, расшифровать его на стороне клиента (используя библиотеки as3crypt), а затем записать его в браузер. Тем не менее, если вы не используете swf для серии обратных вызовов, у вас все еще будет проблема с тем, что в браузере все еще должно быть написано. Firebug и другие браузеры js-консолей позволят пользователю получить "скомпилированные" js. Конечно, можно script AS3 зарегистрировать серию обратных вызовов...

Как я уже сказал, это более гипотетично, чем нет, и хотя я не сомневаюсь, что он может работать в идиллических ситуациях, Flash ограничен, и вам понадобятся знания AS3. Разумеется, преимущество заключается в том, что это способ получить js в браузере без возможности легко читать его.

Ответ 10

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

Даже если он зашифрован, в какой-то момент времени его нужно будет зашифровать для завершения и показать задачу, когда конечный пользователь получит код, если у вас нет полного и полного контроля над компьютер конечного пользователя, скрывающий любой код, который выполняется на стороне клиента, будет невозможным.