线上项目源码安全性处理方案

场景:

最近项目提出要对线上代码进行安全性处理,防止客户直接通过反编译工具将代码反编译出来

方案:

第一种方案使用的是代码混淆

第二种方案使用的是代码加密

方案比较

方案一:采用的proguard-maven-plugin插件

方案二:采用的classfinal-maven-plugin插件

在单模块中方案一还算简单,但是现在项目一般都是多模块,一个模块依赖多个模块,使用方案一非常麻烦,配置复杂,文档难懂,各模块之间的调用在是否要混淆时极容易出错。

在方案二中就简单很多,直接配置一个插件classfinal-maven-plugin就可以实现源码的安全性保护

综合比较果断使用方案二

官方文档:

ClassFinal: Java字节码加密工具

项目实例

 只需要在启动类的pom.xml文件中加如下插件即可,需要注意的是改插件需要放到spring-boot-maven-plugin插件的后面,否则不起作用。

 <plugin>
			    <!-- https://gitee.com/roseboy/classfinal -->
			    <groupId>net.roseboy</groupId>
			    <artifactId>classfinal-maven-plugin</artifactId>
			    <version>1.2.1</version>
			    <configuration>
			        <password>#</password><!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码-->
			        <packages>com.gisquest.cloud</packages>
			        <cfgfiles>application.properties</cfgfiles>
			        <excludes>org.spring</excludes>
			        <libjars>
				        platform-commons-1.0.0-SNAPSHOT.jar,
				        platform-commons-web-1.0.0-SNAPSHOT.jar,
				        platform-commons-web-db-1.0.0-SNAPSHOT.jar,
				        platform-multiappcenter-base-restful-1.0.0-SNAPSHOT.jar,
				        platform-multiappcenter-log-1.0.0-SNAPSHOT.jar,
				        platform-multiappcenter-var-restful-1.0.0-SNAPSHOT.jar,
				        platform-plugin-cache-1.0.0-SNAPSHOT.jar,
				        platform-plugin-authorization-1.0.0-SNAPSHOT.jar,
				        platform-plugin-configcenter-1.0.0-SNAPSHOT.jar,
				        platform-plugin-sleuth2x-zipkin-1.0.0-SNAPSHOT.jar,
				        platform-outerclient-1.0.0-SNAPSHOT.jar
			        </libjars>
			    </configuration>
			    <executions>
			        <execution>
			            <phase>package</phase>
			            <goals>
			                <goal>classFinal</goal>
			            </goals>
			        </execution>
			    </executions>
			</plugin>

配置参数见官方文档,就几句中文 

在改模块中使用maven-install时会再target目录下生成一个

 因此在实际部署的时候将platform-multiappcenter-base-app-1.0.0-SNAPSHOT-encrypted.jar包放到线上运行即可

 该加密的包解压后如下效果,业务逻辑不显示

该模块lib下依赖的 platform-commons-1.0.0-SNAPSHOT.jar解压后效果如下,同样是业务逻辑不显示,从而保证了代码的安全性

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ClassFinal是一款Java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework,可避免码泄漏或字节码被反编译。 项目模块说明: classfinal-core:ClassFinalde的核心模块,几乎所有加密的代码都在这里; classfinal-fatjar:ClassFinal打包成独立运行的jar包; classfinal-maven-plugin:ClassFinal加密的maven插件; 功能特性: 无需修改原项目代码,只要把编译好的jar/war包用本工具加密即可。 运行加密项目时,无需求修改tomcat,spring等代码。 支持普通jar包、springboot jar包以及普通java web项目编译的war包。 支持spring framework、swagger等需要在启动过程中扫描注解或生成字节码的框架。 支持maven插件,添加插件后在打包过程中自动加密。 支持加密WEB-INF/lib或BOOT-INF/lib下的依赖jar包。 环境依赖: JDK 1.8 + 本工具使用AES算法加密class文件,密码是保证不被破解的关键,请保存好密码,请勿泄漏。 密码一旦忘记,项目不可启动且无法恢复,请牢记密码。 本工具加密后,原始的class文件并不会完全被加密,只是方法体被清空,保留方法参数、注解等信息,这是为了兼容spring,swagger等扫描注解的框架; 方法体被清空后,反编译者只能看到方法名和注解,看不到方法的具体内容;当class被classloader加载时,真正的方法体会被解密注入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值