最近公司要把开发的项目直接以 jar 包的方式发送给客户。理由是客户方是内网环境,无法访问我们部署在服务器上的平台,需要部署到他们的服务器上。 我担心代码泄露,公司也不是第一次发生这种事情,公司前辈说这种东西只能靠打官司解决 但我还是想来问问 V 站大佬们:
1
BBCCBB 2020-05-25 16:03:35 +08:00
应该只能混淆 + 加很多没用的代码混淆
|
2
lower 2020-05-25 16:21:23 +08:00
1.核心代码可以考虑搞成 dll 调用;
2.搞 license 许可,用服务器网卡 /IP 去校验; 3.加密 class 文件,启动加载时解密,解密逻辑写在外部 dll ; |
3
murmur 2020-05-25 16:24:25 +08:00
你们前辈说的是对的,当你们做到行业老大的时候,就可以一边搜索一边发律师函了,或者把你们的东西做的有缺陷点,不走客服就用不爽
|
4
yjxjn 2020-05-25 16:30:49 +08:00
最简单的例子其实就是银行系统,好多人说银行系统安全性高,这点不假,但是只要攻破,牢饭妥妥的,所以你前辈说的对,代码这种事儿,你再怎么加密也没啥用,总有漏洞,最好的方法就是打官司。
|
5
lewis89 2020-05-25 16:37:16 +08:00
做好验证, 找个知识产权代理 注册好知识产权 以后打官司就好了,从代码层面上来防盗 根本没用,windows 搞反盗版 搞了这么多年,后面干脆放弃了
|
6
guyeu 2020-05-25 16:48:35 +08:00 2
假如贵司用的是 java9+,可以考虑使用 jimage/jmod 的方式发布二进制。。
|
7
sadfQED2 2020-05-25 23:03:18 +08:00 via Android 1
我以前见过的,在客户服务器上面装个虚拟机,所有东西放到虚拟机里面,虚拟机开磁盘加密啥的
|
8
Iamnotfish 2020-05-26 00:02:56 +08:00
代码混淆吧加 LICENSE 验证吧,从技术层面讲能保护源码也就只能做这么多了
|
9
legiorange 2020-05-26 06:11:46 +08:00
做过破解的人表示对于 java 来说代码混淆基本上会被破解。
除了 2 楼说的,我只能补充一句对 jvm 下手,这才是真正解决问题的关键。 在安全角度来说,你没有办法不让别人破解,你只能提高别人破解的成本,和溯源一样。 |
10
wujieyuan 2020-05-26 10:30:21 +08:00
服务端的代码有什么好保密的, 无非就是 一些业务逻辑和数据库的增删改查, 没啥技术含量, 别人研究你混淆后的代码还不如找一个自己重新写
|
11
nnnToTnnn 2020-05-26 10:59:13 +08:00
@lower 回复 2L, IDA Pro 表示打开你的 dll 和直接打开源码没有什么区别。 从技术上是无法保证源码泄露的。其次为什么要纠结源码? 你看这么多开源项目,别人一样盈利啊
|
12
hantsy 2020-05-26 11:46:52 +08:00
用 Oracle GraalVM 编译成机器内码,提供 Docker Image,或者 Vagrant Box 。
目前很多框架开始支持 Graal (主要是集成,简化开发人员操作),Quarkus 从一开始就是支持,Helidon,Micronaut 也添加了支持,Spring 还在开发中。 |
15
cruii OP |
17
nnnToTnnn 2020-05-26 13:12:34 +08:00
@cruii 说实话你也太看的起你们公司的代码,能比 linux 的代码好吗? 能比 jdk 的代码优秀吗? 与其纠结在代码的保护,还不如在放在著作权,和专利的申请。
就如同 Google 的那句话,从来不担心源码泄露,同样的代码,没有人做的比它好。 |
18
nnnToTnnn 2020-05-26 13:14:19 +08:00
@nnnToTnnn 你花了百分之 20 的精力去把代码做保护的时候,还不如用同等的事件去提高产品的质量,做到别人所不能触碰到的高度,走出一条自己的道路,而不是仅仅停留在当下
|
19
wanguorui123 2020-05-26 18:45:38 +08:00 via iPhone
各种混淆压缩工具
|