【问题标题】:Java authentication/authorization serverJava认证/授权服务器
【发布时间】: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


【解决方案1】:

一旦您的代码在他们的机器上,他们可以修改以简单地忽略您的检查。你可以让它尽可能难,但它永远不会被黑客攻击。

一般而言,您的问题与 this one 相同,其中有一些很好的讨论。

【讨论】:

  • 安德鲁,我意识到任何有技能的人一旦掌握了它就可以绕过任何东西,但谈论的是极少数人 - 特别是考虑到我的目标受众是可能获胜的成年人和青少年在最好的时候,不要成为最懂 IT 的人。是的,一般来说,与盗版有关的大多数问题都是一样的!似乎更简单的方案也更受欢迎!也许是因为每个人的不便最少,但仍然占第 90 个百分位!无论如何谢谢...
  • 问题在于,只需一个人就可以破解它并以非 IT 知识分子理解的方式重新分配它,并且您的整个反盗版投资都付诸东流了。
  • @Andrew 老实说,我理解并接受你的观点,这也是我只部署一个简单的盗版保护计划的部分原因——但我必须在制定一个相当大的反盗版计划之间划清界限用于阻止盗版并通过昂贵的许可计划变得非常愚蠢,无论如何这些计划都会在某个地方被破解!我想知道您认为合理的盗版保护量是多少?在我看来,我们在试图智取最聪明的骗子的同时,把事情复杂化了;忘记我只是一家小公司等等!
  • 另外,它不仅是一家小公司,而且我的软件目标是那些在计算机上有点挣扎或根本无法以正确方式做事的人我>。我也以非常便宜/合理的价格出售我的软件,而且它非常易于使用。所以我非常怀疑对我的软件感兴趣的人甚至会知道warez或torrent网站等;出于这个原因,我希望非法分发以非常低的速度开始 - 足以让我处理自己 - 所以我只需要接受任何事情并将其视为恭维!
  • @Andy:对于您的情况,我会简单地生成一个许可证文件或密钥并将其存储在一个秘密的地方。如果您的软件足够流行以吸引盗版者,那么您可以投资更多。
【解决方案2】:
  1. 尝试将部分业务逻辑委托给服务器端。这样,除非应用许可证有效,否则某些核心流程无法完成。当然,如果你有一些可以委托的逻辑。如果您的应用程序是仅限客户端的,那么这种方法是一个糟糕的选择。

  2. 如果您的应用程序将以高价出售,请尝试使用HASP key 方法(这本身就是投资)而不是服务器身份验证来实施解决方案 我知道这不是您要求的,我只是给出另一个想法。

  3. 尝试通过混淆/加密来创建安全性,如果您的应用程序变得流行,您将失败,因为总会有人在 5 分钟内破解它:(

【讨论】:

  • 感谢 Milan,正如您在我之前的 cmets 中看到的那样,我已经放弃了使用身份验证服务器的想法。可悲的是,我不愿意在盗版保护上投资,因为这东西不存在,也不会以大量金钱出售我的软件。最后,我意识到仅靠混淆并不能防止盗版,而是知识产权。 (但我确实有使用 ProGaurd 排序的混淆)!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 2011-11-10
  • 2015-07-24
  • 2019-06-26
  • 2018-07-06
  • 2015-09-21
  • 2020-10-11
相关资源
最近更新 更多