单独部署在客户服务器上的 Java 应用如何防止客户将其再次部署到其他客户的服务器?
- 0次
- 2021-06-02 17:29:38
- idczone
如题,我用 java 做了一个管理系统出售给某个客户并需要部署到客户的服务器,客户方面有懂技术的人员,如何防止他们去将这个应用再美国服务器次部署到其他服务器上,或者说尽量增加他们移植到其他服务器的成本?以防止他们将其二次出售给其他客户, 从而影响本人的利益.请各位大佬分享一些经验,谢谢.
硬件 key
写好协议。收集并固定证据就是
这东西你做进去也只是防君子不防小人
参考 intelJ
这种不就是 license 吗,和 java 不 java 完全没关系吧
签协议,有法律法规约束
定时往你的服务器发心跳包,如果出现了不止一个 ip 发过来的包,就去警告他们
数据保存到你自己的服务器上,收他们数据存储和读写的费用(
证书 绑定硬件
通过 mac 地址生成授权码。
我记得可以加 License 这种的,定期更换 License,过期后项目启动不了。我第一家公司就是这么做的,比较麻烦。卖大数据平台的,也是这么做的。
1 、usb 加密狗。
2 、根据用户的机器上的 CPU 序列号什么的生成一个唯一 Key,然后需要使用这个 Key 来获取关键的启动配置信息。私自部署的 Key 你这里没有对应的 value,就无法启动。
检测到被破解,就触发 bug,数据到达一定量时,程序闪退且无法启动,再次启动提示联系客服。为了保证数据库安全,每个客户单独生成一个密钥,触发 bug 后加密数据库。这样也方便追踪盗版来源。
硬盘 uuid 不过怕虚拟机,物理机好用
如果是基于 docker 部署的,上面的大多数什么授权码都不行吧,加密狗支不支持也难说,另外现在都是云平台部署,你加密狗插哪里?那些说发心跳包的,客户如果是本地私有云环境,压根就不连外网,发不过来的。
让你的程序运行如果不是你部署的环境,会有一个小概率删掉点什么,同时把删掉的这些写入到自己能看的地方
写好联系方式,等他们找你
签合同
可以考虑关联域名,域名只能解析到一个 IP 。
这个客户可以改字节码的, 直接跳过去就行了
之前公司的做法是获取电脑硬盘的一个硬件 ID 生成一串序列码,客户需要将序列码给我们然后计算出注册号给他们。
改字节码跳过去好啊。。。
根据《中华人民共和国刑法》第二百八十六条规定,破坏计算机信息系统罪是指违反国家规定,对计算机信息系统功能或计算机信息系统中存储、处理或者传输的数据和应用程序进行破坏,或者故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的行为。
入刑哦!
加密狗
java 写的程序这么做没意义, 加密方法轻易就被看到了
把一部分关键逻辑放在你的服务器上,然后做 api 鉴权
绑定硬件,每次只允许生成一份软件授权码
曾经破解过一个 BI 软件,直接修改底层依赖包里的 LICENSE 验证代码,写死过期时间就可以实现无限期使用了。
可以优先考虑如何防止(混淆)反编译,然后再把你的 license 验证代码藏进去。
要真防的话是防止不了的,就如 2 楼所言,防君子不防小人,收集证据是一种方法,但是如果他们的服务器不联网或者屏蔽了你们的中央服务器,这一招就没有办法了。
以往的做法就是,软件根据所部署系统的一些特征生成一个唯一标识( UID ),软件厂商根据一些算法,例如使用私匙对这个唯一标识进行签名生成一个授权码。客户获取授权码之后进行配置,然后软件启动的时候获取 UID,并根据授权码和公匙进行校验。
需要指出的是以上方法如果系统环境被复制(在系统层面没有什么是不能模拟的),或者软件内置的公匙被替换为他们自己的,都会导致此方法失效。
估计未来一段时间仍然会有这种独立部署的需求存在,除非客户端是断网的,内部使用的(例如学校内的一些系统),否则现在绝大多数服务基本上都转变为 SaaS 模式了,多租户使用一组服务器,数据上进行隔离分区,不仅方便版本升级,也省去了客户部署的操作。
老哥的办法有点狠
这不就是单机软件防破解么
于破解过招,保护你的共享软件
――此文曾作为连载刊登于《电脑报》 2003 年 41 、42 期,如要转载,请注明出自《电脑报》
推荐搜索看一下这篇文章,看雪论坛 03 年左右就有讨论过的。
私有部署是客户对数据安全有心理障碍,反正就是单独部署在自己服务器才感觉安心,这是心理需求,并非真正的安全需求。
可以上外网,在线授权 orgid,无法上外网,就加密狗。
加一层 mac 地址验证?
找一个 c 的加解密库,预编译成 dll/so 用 jni 调用。
给所有 jar 文件加密,自定义个类加载器,即时解密 jar 文件并加载。
通过 mac 地址生成授权码。