То, где создать/сохранить секретные файлы для получения информации о лицензии/, испытывает в Windows/Mac OS X/Linux? [закрытый]

13
задан Kevin Panko 24 June 2011 в 21:36
поделиться

7 ответов

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

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

В своем приложении включите открытый ключ. Если вы не можете проверить подлинность/расшифровать файл, потерпите неудачу. Если можете, продолжайте работать. Переподключение к серверу нужно только в том случае, если вы не можете проверить подлинность файла лицензии. Для этого нужен только самый примитивный "сервер лицензий". Если вы отправляете файл по электронной почте, "сервер лицензий" - это просто сценарий, который шифрует строку и отправляет ее пользователю.

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

А если вы хотите предотвратить многократную повторную регистрацию пользователя или передачу файла лицензии его друзьям, запишите его MAC-адрес на стороне сервера и в файле лицензии. Лично я не стал бы этого делать. И это не остановит изощренных хакеров, но вам решать, сколько времени тратить на игру в кошки-мышки.

4
ответ дан 2 December 2019 в 02:11
поделиться

Чтобы проиллюстрировать проблемы с этим подходом, был медиасервер на базе Linux, на котором хранилась бесплатная пробная версия. отметка времени в /usr/bin/.tv . Чтобы кто-то понял, что к файлу обращаются, требуется всего лишь strace - в этом случае простое удаление файла перезапустило пробную версию.

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

0
ответ дан 2 December 2019 в 02:11
поделиться

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

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

0
ответ дан 2 December 2019 в 02:11
поделиться

Используйте реестр для версии для Windows. Он создан для хранения данных в центральном месте, и в качестве дополнительного бонуса, если пользователь удаляет всю вашу папку, настройки все еще остаются в реестре ( *)

здесь, в stackoverflow , находится статья, описывающая, как получить доступ к реестру с помощью языка программирования Java.

Я не думаю, что у Mac есть что-то подобное, и я знаю, что в Linux этого точно нет, но это только начало.

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

-1
ответ дан 2 December 2019 в 02:11
поделиться

Если говорить конкретно о Mac, то такой файл должен находиться в ~/Library/Application Support/YourAppName, если лицензия пользовательская, или /Library/Application Support/YourAppName для машинной лицензии.

Когда пользователь лицензирует мое приложение, я записываю файл в ~/Library/Application Support/MyAppName, поскольку это не требует специальных разрешений, но стараюсь читать его из обоих мест, чтобы обеспечить возможность машинной лицензии, если я когда-нибудь ее создам.

0
ответ дан 2 December 2019 в 02:11
поделиться

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

1
ответ дан 2 December 2019 в 02:11
поделиться

Системы POSIX должны помещать данные приложения в скрытый файл в домашнем каталоге пользователя. Системы Windows должны поместить что-то в CSIDL_APPDATA .

0
ответ дан 2 December 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: