【发布时间】:2011-06-11 15:02:03
【问题描述】:
我在这里有点陷入困境,因为我从没想过我会做这样的事情,我不知道从哪里开始;所以我正在帮助的人将能够帮助我(最好是通过提供一些 java 代码)...
在我努力保护我的 Java 软件免受盗版的过程中,我发现除非我不断地在线检查,否则这是完全不可能的——这就是我想做的。只是,我知道的唯一细节是,我的程序需要与某种在线脚本通信并验证程序正在使用的许可证密钥,然后相应地报告。
但是,这就是我所知道的 - 我仍然对服务器端的实际组成感到困惑。我希望我自己没有托管网站(使用 JustHost)这一事实不会阻止我做我需要做的事情。
所以基本上,我需要一些帮助来创建一个设置,以防止任何人在连接到互联网时盗版我的软件。我想拥有类似登录系统的东西;用户许可证密钥将充当用户名和密码,但老实说,我真的不知道,因为如果我这样做,每次他们想使用该软件时都必须手动登录和注销。
在我可以走路之前不要跑步但是当用户没有连接到互联网时会发生什么?更糟糕的是,我如何判断是否有人窃取了合法用户的许可证密钥?等等
提前致谢,
安迪
PS 如果有帮助,我打算使用 PostgreSQL(或者 MySQL),而且我不会为 JustHost.com 的专用服务器付费...
【问题讨论】:
-
我认为你应该开始with this StackOverflow question。仔细阅读接受的答案。它基于密码学中的一些基本原则,尽管并非所有这些原则都是从根本上安全的。不过,这是一个好的开始。
-
为了让我之前的评论不那么含糊,我想补充一点,您的方案应该至少包含一个密钥或一对公私密钥。
-
我确实希望您的客户喜欢依靠在线的您的服务器来使他们的付费软件可用。
-
Vineet Reynolds,感谢您提供的链接。现在我完全看不到任何许可方案是万无一失的或比其他方案更好的,我想我只是保持简单,并使用我使用 Java 获得的最佳硬件 ID 创建硬件指纹。我没有更多时间担心会给那些没有 MAC 地址或更改了一些主要硬件的少数人带来不便——因为我的大多数目标受众可能不会有 IT 知识或曾经遇到过有关他们的硬件等问题。
-
@extraneon 仅供参考,我的软件将不依赖于互联网连接,它只会利用一切机会来验证所使用的串行密钥是否以某种方式真实。但是,我认为,除非我使用带有用户名和密码的实际登录系统,否则为我的目的构建身份验证服务器将是复杂且有问题的,这会给我的用户带来不便和麻烦——这是我想避免的!
标签: java postgresql authentication authorization