Защита от пиратства при разработке приложений для настольных ПК с помощью ключей продуктов, обфускации или аналогичных средств защиты на стороне клиента не имеет смысла (об этом говорится в большом количестве сообщений о переполнении стека). Единственный реальный способ предотвратить пиратство — это создать связь между клиентом и сервером, где важный код находится только на сервере.
Это то, что я пытаюсь сделать со своим программным обеспечением, требовать входа в систему для проверки подлинности запросов к серверу для обработки некоторых данных. Добавьте простой способ изменить пароль и отслеживание IP-сессий, и это довольно надежно. Однако теперь пользователь должен ввести имя пользователя и пароль, когда они хотят его использовать, и они могут очень легко ввести чужие учетные данные.
Затем мне в голову пришла мысль, а как насчет встраивания имени пользователя в приложение, когда пользователь загружает клиентское программное обеспечение? С точки зрения пользователя потребуется только пароль, что немного ускоряет процесс. Да, все еще возможно редактировать программу под чужим именем пользователя, но теперь это менее очевидно.
Так что это мой вопрос, есть ли какие-либо угрозы безопасности или недостатки дизайна при жестком кодировании имени пользователя в программе? И, во-вторых, как начать реализацию встраивания имени пользователя и компиляции C ++, скажем, в серверном приложении Node js?
Спасибо за ваше время.
Вам не хватает программного обеспечения, размещенного на сервере, и вот оно:
У вас всегда есть контроль над сервером. Вы никогда не имеете контроля над клиентом.
Поэтому, когда вы говорите:
пользователь должен ввести имя пользователя и пароль, когда они хотят его использовать, и они могут очень легко ввести чужие учетные данные
Что вы на самом деле имеете в виду:
Когда кто-то вводит чужие учетные данные, что я могу сделать?
Ответ заключается в том, чтобы ограничить или отменить доступ к учетным данным в зависимости от моделей доступа. Если вы видите подозрительный доступ, например, с IP-адресов в разных странах, возможно, вы захотите расследовать и, возможно, заблокировать аккаунт.
Вы не бессильны здесь, когда вы контролируете сервер. Блокируйте людей, если нужно.
Вы также не хотите вставлять информацию в исполняемый файл, потому что законные владельцы, ваши клиенты, захотят убедиться, что они загрузили нужный файл на основе криптографического хэша, такого как SHA2. Если вы изменяете каждый файл, они не могут этого сделать, и каждая версия выглядит «взломанной».
Вместо этого, если необходимо, создайте какой-нибудь зашифрованный файл доступа или лицензии, который можно будет предоставить на сервер и расшифровать с помощью ключа, который хранится только на сервере. Конечно, они могут поделиться этим файлом с кем-то еще, но вы можете определить несанкционированный доступ и обработать его соответствующим образом.
Других решений пока нет …