Предотвращение кражи исходного кода HTML

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

Просто интересно, есть ли способ предотвратить это в будущем?

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

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

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


person Badams    schedule 29.01.2013    source источник
comment
Одно слово: контракты   -  person Diodeus - James MacFarlane    schedule 29.01.2013
comment
Просто напишите очень плохой код. Так никто не захочет украсть :) Или NDA.   -  person Cory Danielson    schedule 29.01.2013
comment
Вы можете рассмотреть возможность размещения этого на сайте Programmers (programmers.stackexchange.com), а не SO в будущем, хотя этот вопрос немного серая зона.   -  person AlexMA    schedule 29.01.2013
comment
@Diodeus Контракты — это одно, но, в частности, прогрессивные платежи в сочетании с результатами — это то, что нужно для работы с новыми клиентами.   -  person iambriansreed    schedule 29.01.2013
comment
@Diodeus, очевидно, я знаю, как это сделать сейчас, но лист бумаги не обязательно предотвратит кражу, в конце концов он просто предоставит решение, однако я очень ценю ваш комментарий!   -  person Badams    schedule 30.01.2013
comment
@AlexMA Вот почему я не был уверен, поскольку у меня была такая же мысль, что это немного серая зона. Хотя моя история, вероятно, подходит программистам, вопрос был больше направлен на часть кода, поэтому я выбрал SO   -  person Badams    schedule 30.01.2013
comment
@CoryDanielson, лол, я думаю, написание плохого кода - это один из способов сделать это. Хотя как профессионал выглядит очень плохо :P   -  person Badams    schedule 30.01.2013
comment
@Badams Круто, просто выбросил это туда. Мои 2 цента: теоретически нет реального способа скрыть код или передать секреты в коде, если он работает на чужом оборудовании, даже если он скомпилирован, зашифрован и/или запутан. Однако на практике вы, вероятно, могли бы что-то состряпать, если бы знали, что ваш клиент не очень разбирается в технологиях (хотя у него может быть друг...). Судя по тому, что я видел, в последнее время поставщики приложений для iOS высказывались по этому вопросу.   -  person AlexMA    schedule 30.01.2013


Ответы (7)


ИМХО, хорошим способом были бы презентации, например. с TeamViewer или аналогичным программным обеспечением, когда вы не можете обратиться к своему клиенту.

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

person rekire    schedule 29.01.2013
comment
У меня был когда-то клиент, которому нужен был прототип для своего банка. Итак, я создаю фиктивную страницу с полной функциональностью (только внешний интерфейс для клиентов) бесплатно, я думал, что получу работу для настоящей страницы. Затем, спустя 7 месяцев, я снова услышал от человека, который сказал мне, что он счастлив, что страница теперь онлайн и готова для клиентов. Это было здорово! Как мне на это реагировать!? - person rekire; 29.01.2013
comment
Мне нравится идея удаленного доступа. Хотел бы я подумать об этом раньше. Скриншоты — это то, о чем я думал в будущем, но я, вероятно, настрою виртуальную машину только для TeamViewer с возможностью доступа к моему серверу разработки. Спасибо за предложение!! - person Badams; 30.01.2013

Другие ответы здесь - это просто набор хаков, которые можно отменить.

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

Варианты широко открываются для защиты кода на стороне сервера, но ваш вопрос, похоже, сосредоточен на коде на стороне клиента.

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

Когда вы делаете себя легкой добычей для мошенников, вы только привлекаете мошенников.

person iambriansreed    schedule 29.01.2013
comment
Да, теперь я понимаю, что лучшая бизнес-логика - это ответ, к сожалению, для того, чтобы я научился этому, должно было произойти что-то плохое. Не могли бы вы уточнить, какие средства защиты используются в коде на стороне сервера? Обычно я разрабатываю на php и делаю вывод html. Хотя php является кодом на стороне сервера, он по-прежнему выводит простой html, что касается клиентской стороны. Может я не совсем понимаю, к чему ты клонишь? - person Badams; 30.01.2013
comment
@Badams Для защиты PHP вам нужен PHP Obfuscator. Я тоже усвоил урок на своей шкуре. Это нормально делать ошибки, пока они разные. - person iambriansreed; 30.01.2013

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

person SeinopSys    schedule 29.01.2013
comment
На самом деле я никогда не думал об этом! Возможно, мне придется подумать об этом для любых будущих крупных проектов, но общее мнение, похоже, заключается в том, чтобы все оформлять в письменном виде, что, как я понимаю, мне действительно следует делать в любом случае. Спасибо за предложение! - person Badams; 30.01.2013

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

Многие сайты фриланса предоставляют эту услугу.

person sharp12345    schedule 29.01.2013
comment
Есть ли у вас какие-либо предложения по сервисам, которые это делают? Я хотел бы изучить это подробнее. Меня обычно просто нанимают из уст в уста, поэтому в основном это были наличные платежи, и у меня никогда не было проблем раньше. - person Badams; 30.01.2013
comment
@Badams , elance.com , odesk.com — хорошим сайтом является freelancer.com, и его комиссия варьируется от 3% до 10% в зависимости от вашего типа членства — вы можете найти список сайтов для фрилансеров в Google. - person sharp12345; 30.01.2013

Исходный код можно зашифровать с помощью javascript. Попробуйте этот веб-сайт: http://www.iwebtool.com/html_encrypter Я никогда не использовал этот инструмент сам, и я не знаю, все ли работает хорошо, но думаю стоит попробовать. Вы всегда можете загрузить нормальный исходный код после оплаты. Кроме того, убедитесь, что у вас есть правильная контактная информация вашего клиента в будущем. Я также настоятельно рекомендую использовать контракт в будущем, чтобы ваш клиент был юридически обязан платить вам. Другой возможный вариант — дать вашему клиенту ничего, кроме скриншота сайта, но, конечно, ваш сайт станет статичным.

person falidoro    schedule 29.01.2013
comment
Невозможно надежно зашифровать HTML/JavaScript. Как только он попадет в мой браузер, я смогу проверить DOM и получить ваш исходный код. P.S. Все, что делает этот инструмент, это: document.write(unescape(...)). - person Rocket Hazmat; 30.01.2013

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

Посмотрите, как это работает, здесь: http://ec2-176-34-64-10.eu-west-1.compute.amazonaws.com/nopro/xscroll — это демо только для сокрытия скрипта xscroll.js.

Когда вы просматриваете DOM в своем клиенте, все, что вы видите, это: nplreq(url) для каждого скрипта, который вы привязываете к HTML head.

Шифрование и дешифрование полностью прозрачны для браузера. Он протестирован с Firefox, Chrome, Opera, Konqueror, IE8-10, Dolphin и Safari на планшете Android.

Шифрование с помощью AES (Rijndael 256) с использованием одноразовых ключей, которые согласовываются между клиентом и (liblock-) сервером с использованием Diffie-Hellman.

Истоки надежно спрятаны, и только при очень больших усилиях к ним можно вернуться.

person wowei    schedule 13.03.2013
comment
Источник скрыт, когда вы их не выполняете. Я легко вижу источник с Firebug. - person nhahtdh; 13.03.2013
comment
нет не можешь. Единственное, что вы там видите, это инициализация liblock.php и ничего больше. Init содержит только функции base64, bigint, diffie-hellman и aes. - person wowei; 15.03.2013
comment
Да, вы не можете легко украсть его напрямую (посмотрев исходный код и прочее), но хороший плагин может получить код eval. Это выглядит как xscroll.js: pastebin.com/im2p7fpK (и все это занимает 10 секунд) - person nhahtdh; 15.03.2013
comment
Это совершенно небезопасно (как было продемонстрировано в комментариях к вашим другим ответ). Выгрузка зашифрованных данных в консоли занимает считанные секунды. Даже если вам каким-то образом удалось защитить его от случайного слежения, Webkit и FF имеют открытый исходный код, и сообразительный злоумышленник может легко подключиться к парсеру скриптов. Итог: не используйте это. - person Tim Medora; 16.03.2013

Вы можете либо просто запустить сайт на своем ноутбуке, либо разместить весь сайт за страницей входа, для которой требуется пароль. Вы сможете делать живые демонстрации, но клиент не будет иметь доступа к сайту, пока вам не заплатят.

person Shane    schedule 29.01.2013
comment
Это не обязательно остановит кражу исходного кода HTML/CSS. В частности, прятаться за предложением входа в систему. - person WhoaItsAFactorial; 29.01.2013
comment
@ Jermey1026 Jermey1026 - Я думал над вопросом с точки зрения Java, который позволяет вам поместить JSP/HTML в WEB-INF, который недоступен, если вы не пройдете через сервлет входа в систему. - person Shane; 06.02.2013