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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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