我有这个java swing应用程序,我打算通过互联网销售.目前,我倾向于使用java webstart部署应用程序.该产品将被许可用户仅在一台计算机上使用该程序.我担心这种模式的盗版行为.我想安装一些安全功能来强制执行许可证模型.目标是至少使许可用户难以将已安装的产品(包括许可证密钥)复制到未经许可的用户.以下是我现在看到的选项:
每次启动程序时,强制用户使用用户名/密码向母船进行身份验证.
只需在注册并付费后在用户PC上的某处(隐藏?)安装许可证密钥即可.在运行时,验证是否安装了有效的许可证密钥.
使用/构建基于用户计算机硬件指纹的安全包.每次启动应用程序时都会计算此指纹,并使用某种哈希值与本地安装的许可证密钥进行比较.此许可证密钥仅对此硬件指纹有效.
这里的一个问题是,一旦安装了这个应用程序,除了使用java webstart检查应用程序更新之外,应用程序没有任何运行时需要联系母船.应用程序在本地执行的所有操作都会使用swing将结果显示给用户.因此,任何涉及母船的解决方案基本上都意味着构建服务器基础设施仅用于许可证验证.
我想我正在寻找的东西是基于java的,至少在某种程度上是安全的,易于部署并且对用户来说并不痛苦.您使用了哪种安全/许可方法?
编辑:我应该补充一点,我不一定要寻找一个银弹来防止绝对每个人都打败安全.总会有人有足够的时间来找到完成任务的方法.我不是那么关心这些家伙.我基本上希望让临时用户只需复制许可证密钥并发送给他的好友.正确实施后,该解决方案应该让临时用户相信购买它更简单.
我会说(2)是你最好的选择.您已经在(1)中谈过自己,如果用户购买新主板,(3)会引起问题.(2)对合理的计算机用户不会提供太多保护,但也不应该引起太多问题.
但最终,你无能为力将阻止一个坚定的用户盗用你的软件.
事实上,最有效的反盗版软件开发策略是最简单的一个:
有一个伟大的怪胎产品.
收取合理的价格.
- 杰夫阿特伍德
IMO试图在客户端强制执行复制保护可能比它的价值更麻烦.你将花费无数个小时试图超越你的客户(你可以花费几个小时来改善你的产品),但最终海盗将永远获胜.
不过你有其他选择:
拥有极具吸引力的定价模式,让人们购买您的产品变得非常简单.如果您有足够低的进入障碍,并尊重和信任而不是怀疑对待您的客户,您可以最大限度地降低盗版风险.
将您的产品与某种在线服务联系起来.赠送客户,但收取服务费.这就是暴雪对"魔兽世界"所做的事情,那是少数没有任何盗版问题的游戏之一(他们还有许多其他问题,但这是另一个故事).