Как защитить локальное веб-приложение от взлома(ключа продукта)?
Здравствуйте! Допустим, мной написано web-приложение (NodeJS), но работает оно локально, т.е. устанавливается на сервер или пк клиента с linux на борту. Не у всех клиентов есть выход в интернет. Как защитить приложение от влома/выкладывания в общий доступ? Т.е. чтобы нельзя было вырезать/хакнуть часть, ответственную за лицензирование (ключ продукта).
P.S. Я скорее имел ввиду, что код находится в js-файлах. А более-менее нормальный программист может убрать проверку лицензии, т.к. исходники в наличии. Как от этого защититься?
После оплаты, делаете сборку приложения с шифрованием ключа для запуска приложения с помощью хеша от номера платёжной транзакции.
Если нет хеша - программа при запуске просит ввести все платёжные данные покупателя и ключ для генерации файла-лицензии (на стороне пользователя программы), которым она каждый раз будет расшифровывать данные для запуска основного кода.
Если ключ и платёжные данные покупателя - корректны (расшифровка прошла успешно), то программа запустится, сохранив файл-лицензию именно для этого ПК.
который покупает, а потом ломает и выкладывает ломаную версию
Да, я про этот вариант. Просто если поставлять, условно говоря, exe-шник, то всё нормально. Потому как дизассемблить, особенно C/C++, насколько я знаю, сложно, и занимаются этим только для особо крупных или популярных приложений. А сейчас, в процессе написания веб-приложения, понимаю, что по сути отдам клиентам исходники (js-файлы), которые отредактировать не в пример легче..
CityCat4, Да я и не буду предпринимать что-то более сложное для защиты.
1. Распространение копий => бесплатная реклама мне.
2. Сложность => трата времени.
3. Закон => последствия.
Бонус: скорость прогресса.
Дмитрий Бурнашев, Ломают все. Нет ничего такого, что бы не сломали. Дело только в пороге вхождения в технологию и уровня, на котором она становится доступной для повторения. И конечно же ее стоимости. Поэтому Playstation и 1C всегда ломали и будут ломать, а вот достаточно редкие у нас вещи типа допустим того же Nakivo Backup & Replication - попробуй-ка найди кейген!
Я бы просто аппелировал к людской лени и глупости - сделал бы несложную защиту, которая устоит перед откровенной школотой - js-файлы тоже защищают, обфускацией кода, например и поставил небольшую цену, такую, чтобы в вопросе "а может ну его нах.., купить проще?" - побеждал вариант "неохота возиться, проще купить". А что до "злонамеренного покупателя" - при небольшом числе клиентов и не особо популярном продукте не так велик шанс на него наткнуться (соответственно, чем более популярный продукт и чем больше клиентов - тем больше этот шанс)
xmoonlight, Да я собственно согласен. Нет большого смысла писать защиту, которую все равно отломают. У меня вот стоит например бесплатная версия MakeMKV, которая просто раз в какой-то интервал говорит - качай новую версию или вводи код. Угадай, что я делаю каждый раз? :) И она снова работает сколько-то времени (и возможно что-то о себе шлет автору) без ограничений, а потом снова предлагает скачать новую версию...
d-stream, ну да. Разумеется, если приложение известно трем с половиной юзерам и пользуется им аж десять человек - никто его ни ломать ни распространять в тырнете не будет. Именно поэтому практически невозможно найти кряки-патчи-серийники на редкую софтину, которую обычно продает непосредственно ее автор да еще как-нибудь через #опу.
Я бы покопал в эту сторону. Сам таким никогда не занимался, поэтому подробнее ответить не могу.
Но в том случае, если отдаёте голые исходники, шансов полной защиты нет.
НИКАК. Посмотрите какие бабки тратят на денуву и сколько она проблем приносит - и тем не менее, ломают. Чего уж говорить о каком-то маленьком приложении на интерпретируемом языке.