Какие есть способы предотвращения воровства файлов?

Хочу обезопасить себя от заказчиков, с которыми работаю в первый раз. Подскажите средства для того что бы сжимать/минифицировать/уродовать html/css/js до такой степени, что даже если заказчик захочет украсть исходники с сайта, что бы он не смог с ними ничего сделать. Или может есть защита от скачивания/копирования кода?
  • Вопрос задан
  • 2619 просмотров
Пригласить эксперта
Ответы на вопрос 9
riky
@riky
Laravel
предлагаю просто в js делать закладки. например проверка текущего домена, если не равен вашему тестовому - редиректить на ваш домен с предупреждением типа работа не была оплачена.
только естественно нужно усложнить и запутать
- во первых - название домена не должно легко находится (можно например использовать хэш функции, типа md5, наличие кода которой также усложнит разбор кода)
- во вторых хотя бы js обфусцировать, лучше всего придумать свою функцию обфускации, которая берет весь код скрипта и как то его преобразует, либо хотя бы частично.
- желательно чтобы редирект был не слишком явный, например наступает только в 1% запусков и срабатывает только через 2 минуты. это также усложнит поиск дебаггером, + клиент может стырить код (или заказать кому то копирование) - и он покажется ему рабочим, кинет вас, а потом поймет что зря это сделал. но даже срабатывая 1% раз, эта защита испортит ему репутацию.

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

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

100% защита это также как и в десктоп программах - только если часть алгоритма будет выполняться на вашем сервере (облачная обработка/сервисы). но это для вас наверное не очень актуально.

еще один неплохой вариант - сделать приложение на любом десктопном языке программирования типа мини веббраузер. то есть все приложение это просто WebView во весь экран. и клиенту вы передаете один ехе файл который он должен запустить и увидеть сайт. скопировать будет очень сложно, если хорошо упаковать, сам клиент этого сделать не сможет скорее всгео, заказать взлом выйдет наверное не дешевле чем ваша работа. из минусов не очень удобно, для обоих, и клиент не сможет проверить качество кода и работу в реальных браузерах. PS: ищите компоненты WebView на базе хромиума, чаще всего стандартные компоненты основаны на IE да еще старых версий. также можно попробовать использовать для этих же целей понятные для фронтендеров срежы типа NWJS или electron - все программирование на JS и построены на базе хромиума, но в них сложнее обеспечить защиту кода, хотя тоже в какой то степени можно.

поэтому в ваших силах только усложнить попытку воровства, при котором взлом становится дороже чем разработка и это реально. полностью готовых решений наверное найти будет сложно, да и если есть защита для нее обычно уже есть программа для обхода. но можно сделать и своими силами, придется заморочится, но как минимум это интересно.
Ответ написан
Комментировать
@neeil
добрый вечер) клиентскую часть зашифровать просто используйте вот эту статью https://habrahabr.ru/company/xakep/blog/128741/
Ответ написан
Комментировать
sim3x
@sim3x
Твоя работа не так много стоит, чтоб ее воровать
Ответ написан
neluzhin
@neluzhin
Полностью защититься не получится, но как минимум можно сделать код абсолютно неподдерживаемым - черт ногу сломит даже при малейших изменениях.

Для начала, вы должны заинлайнить всё в один HTML-файл, как предложил Александр Татарин. Обязательно минифицируйте и объедините JS и засуньте его в единственный тег <script>. После минификации имена переменных вашего кода будут нечитаемыми.

Затем прогоните страницу через HTML Muncher - это такая штука, которая переименует все CSS-классы в теге <style>, в атрибутах class вашей разметки, а также заменит все совпадения имен классов в JavaScript. Таким образом, был у вас класс .home, а станет .a, .icon превратится в .b и т.д.

Ну а затем уже обмазываться тем, что порекомендовал вам пользователь neeil.
Ответ написан
Комментировать
@zzzmaikzzz
Junior-web
Прошлый раз спрашивал, как позиционировать элемент на странице и уже боишься, что у тебя что-то буду воровать ?)))
Ответ написан
Комментировать
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Всю страницу собрать в один файл через https://github.com/remy/inliner
Полученную строку скомпилировать во flash swf (скопировать в строковую переменную и скомпилить)
При загрузке во флеше вызвать js функцию innerHTML у страницы передав как параметр строку с данными.
Данные действия достаточно просто автоматизируются обычным bat скриптом.

Но не думаю, что вам подойдет такой способ.
Ответ написан
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Если Ваши исходники принесут укравшему существенный профит, то не спасет никакая защита - отломают/деобфусцируют/расшифруют. Я бы сделал как советует MaxKorz
Ответ написан
Комментировать
dimasmagadan
@dimasmagadan
используйте require.js
это усложнит копирование для не продвинутых пользователей
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Минифицировать и т.д. и т.п. это фигня

www.jsnice.org
умеет подставлять свои имена, и почему-то даже осмысленные иногда, не знаю как :)

Все остальное точно так же можно разобрать в пару кликов.

Лучший способ показывать например через видео в скайпе.
И далее уже например получать часть оплаты или всю и отдавать исходники на ручную проверку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект