Как предотвратить пиратство для Java webstart приложение

Я решил это довольно элегантно.

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

var data = []; //dataset
data.map( row => {
  let x = {};
  if (obj.hasOwnProperty(v) && obj[v] && obj[v].constructor === {}.constructor){
    x[v] = JSON.stringify(obj[v]);
  }else {
    x[v] = obj[v];
  }
  return x;
});

Теперь, когда данные заполнены, и столбцы установлены, мы переходим в ячейку:

col.cellsrenderer = (index: number, datafield: string, value: any, defaultvalue: any, column: any, rowdata: any): string => {
  let decode = value;
  try {
    decoded = JSON.parse(value);
  }catch (e){ 
    decoded = value;
  }

  //Now you can do custom stuff with a formatter:
  let formatter = getFormatter(XXXXX);
  let cell = `<div>${formatter.format(decoded)}</div>`; 
  //decoded would be an object OR a fundamental type string, number, etc.

  // When doing cellrenderer, you will only be able to use globalclasses, so custom component based class defintions will not work.  If needed, you would use inline styles, or expose global css/scss for a cell.
  return cell;
}
5
задан Joe Doyle 2 May 2012 в 12:54
поделиться

8 ответов

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

Но в конце, ничто, что можно сделать, не будет мешать решительному пользователю грабить программное обеспечение.

На самом деле самая эффективная антипиратская стратегия разработки программного обеспечения является самым простым из всех:

  1. Имейте большой долбаный продукт.
  2. Взимайте справедливую цену за него.

-- Jeff Atwood

10
ответ дан 18 December 2019 в 05:56
поделиться

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

3
ответ дан 18 December 2019 в 05:56
поделиться

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

У Вас есть другие опции, хотя:

  1. Имейте привлекательную модель ценообразования и сделайте ее действительно простой, чтобы люди купили Ваш продукт. Если Вы имеете достаточно низко барьер для доступа и рассматриваете Вашего клиента с уважением и доверием вместо подозрения, Вы минимизируете риск пиратства.
  2. Свяжите свой продукт с некоторым онлайн-сервисом. Выдайте клиент, но взимайте за сервис. Это - то, что Снежная буря делает с World of Warcraft, и это - одна из нескольких игр там, которая не имеет никаких проблем пиратства безотносительно (у них есть много других проблем, но это - другая история).
9
ответ дан 18 December 2019 в 05:56
поделиться

Честно, если для программы на самом деле не нужны данные из сервера для функционирования (поскольку fred-o указал той World of Warcraft потребности; и верно), затем нет ничего, что можно сделать сторону клиента, которая будет абсолютно надежна. Все 3 идеи, которые Вы имели, могли обойтись легко. Сервер/вход в систему можно было бы быть немного более твердым, но я даже видел, что трещины идут, насколько локально создать фиктивный сервер входа в систему так программа, думает, что это аутентифицируется.

Единственный истинный способ предотвратить пиратство состоит в том, чтобы иметь некоторую логику серверной стороны, которую ДОЛЖНА выполнить программа. Например - Вы делаете программное обеспечение, которое изменяет размер изображений (я знаю, я знаю). Если бы необработанное изображение было отправлено к Вашему серверу и изменено тут же переданное обратно клиенту (в противоположность клиенту, делающему изменение размеров), то Вы были бы в безопасности, потому что Ваш сервер может легко быть защищен с какой-то системой входа в систему. И без допустимого имени пользователя или пароля (или если бы они пытались генерировать поддельного), программа была бы бесполезна.

При реализации клиентской функциональности она может быть достигнута, независимо от того, что Вы делаете.

3
ответ дан 18 December 2019 в 05:56
поделиться

Из Ваших трех решений:

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

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

Третье будет, вероятно, работать, пока пользователь не сделает что-то к компьютеру, который изменяет цифровой отпечаток (я не знаю то, что Вы проверили бы), или хочет переместить приложение от одного компьютера до замены. Затем у Вас будет потенциально сердитый пользователь. ("Я заменил жесткий диск / перемещенный в другое соединение LAN/, имел системный отказ / безотносительно, и [ругательство, удаленное], вещь просто прекратила работать!")

Так, в то время как номер 2, вероятно, не вызовет пользователя проблемы, он не будет работать на большую часть схемы защиты от копирования. Номера 1 и 3 собираются получить Вас несчастные пользователи, будут определенным количеством проблемы Вам и не будут мешать определенным людям копировать ее так или иначе.

2
ответ дан 18 December 2019 в 05:56
поделиться

Я серьезно пересмотрел бы требования лицензирования, потому что осуществление их потеряет Вас законные клиенты. Если Вы - огромная компания, можно предоставить это, но если Вы - запуск или человек, Вы не можете.

Один выход должен предложить отдельную лицензию - хороший для всех машин отдельное использование. Это, для лучше или для худшего, то, как люди думают, что программное обеспечение "должно" быть продано. Если Вы заставляете их заплатить за каждую машину, они используют, они будут чувствовать, что Вы пользуетесь преимуществом, и именно тогда они начинают исследовать сеть для чужого лицензионного ключа.

При необходимости Вы могли бы также предложить корпоративную лицензию или 10 пакетов лицензий, или что бы то ни было, для скидки по покупке их отдельно. Это дает и людям и организациям способы использовать Ваше программное обеспечение по закону, которые не заставляют их чувствовать, что Вы сжимаете их необоснованно.

1
ответ дан 18 December 2019 в 05:56
поделиться

Рассмотрите возможность использования JNLP, чтобы иметь ограниченный по времени компонент в вашем приложении - модуль лицензии? - которые необходимо регулярно обновлять через Интернет. Для доступа к обновленной версии требуется регистрация. Предоставьте

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

0
ответ дан 18 December 2019 в 05:56
поделиться

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

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

Итак: я бы не стал использовать то, что время от времени звонит домой.

(Что касается лицензионных ключей: если ключ работает только с определенным регистрационным именем, и если это имя отображается в каком-то диалоговом окне «О программе», тогда Я бы не стал беспокоиться о том, чтобы сделать его аппаратно-зависимым. Конечно, несколько регистрационных имен и их ключей будут общими, но что-то более необычное не стоит усилий. Если мой Mac подведет меня, я не буду удивлен, увидев мой 1-щелчок Восстановление Time Machine на новом оборудовании приведет к сбою запуска вашего приложения.

0
ответ дан 18 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

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