欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot項目防止反編譯的方案

 更新時間:2024年01月09日 09:35:09   作者:沁禹  
最近項目要求部署到其他公司的服務(wù)器上,但是又不想將源碼泄露出去,要求對正式環(huán)境的啟動包進行安全性處理,防止客戶直接通過反編譯工具將代碼反編譯出來,所以本文給大家介紹了SpringBoot項目如何防止反編譯,需要的朋友可以參考下

場景

最近項目要求部署到其他公司的服務(wù)器上,但是又不想將源碼泄露出去。要求對正式環(huán)境的啟動包進行安全性處理,防止客戶直接通過反編譯工具將代碼反編譯出來。

方案

第一種方案使用代碼混淆

采用proguard-maven-plugin插件

在單模塊中此方案還算簡單,但是現(xiàn)在項目一般都是多模塊,一個模塊依賴多個公共模塊。那么使用此方案就比較麻煩,配置復(fù)雜,文檔難懂,各模塊之間的調(diào)用在是否混淆時極其容易出錯。

第二種方案使用代碼加密

采用classfinal-maven-plugin插件

此方案比對上面的方案來說,就簡單了許多。直接配置一個插件就可以實現(xiàn)源碼的安全性保護。并且可以對yml、properties配置文件以及l(fā)ib目錄下的maven依賴進行加密處理。若想指定機器啟動,支持綁定機器,項目加密后只能在特定機器運行。

ClassFinal項目源碼地址

項目操作

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

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <!--
                1. 加密后,方法體被清空,保留方法參數(shù)、注解等信息.主要兼容swagger文檔注解掃描
                2. 方法體被清空后,反編譯只能看到方法名和注解,看不到方法體的具體內(nèi)容
                3. 加密后的項目需要設(shè)置javaagent來啟動,啟動過程中解密class,完全內(nèi)存解密,不留下任何解密后的文件
                4. 啟動加密后的jar,生成xxx-encrypted.jar,這個就是加密后的jar文件,加密后不可直接執(zhí)行
                5. 無密碼啟動方式,java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar
                6. 有密碼啟動方式,java -javaagent:xxx-encrypted.jar='-pwd= 密碼' -jar xxx-encrypted.jar
            -->
            <groupId>net.roseboy</groupId>
            <artifactId>classfinal-maven-plugin</artifactId>
            <version>1.2.1</version>
            <configuration>
                <password>#</password><!-- #表示啟動時不需要密碼,事實上對于代碼混淆來說,這個密碼沒什么用,它只是一個啟動密碼 -->
                <excludes>org.spring</excludes>
                <packages>${groupId}</packages><!-- 加密的包名,多個包用逗號分開 -->
                <cfgfiles>application.yml,application-dev.yml</cfgfiles><!-- 加密的配置文件,多個包用逗號分開 -->
                <libjars>hutool-all.jar</libjars> <!-- jar包lib下面要加密的jar依賴文件,多個包用逗號分開 -->
                <code>xxxx</code> <!-- 指定機器啟動,機器碼 -->
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>classFinal</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

</build>

啟動方式

無密碼啟動

java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar

有密碼啟動

java -javaagent:xxx-encrypted.jar='-pwd=密碼' -jar xxx-encrypted.jar

反編譯效果

啟動包加密之后,方法體被清空,保留方法參數(shù)、注解等信息.主要兼容swagger文檔注解掃描

反編譯只能看到方法名和注解,看不到方法體的具體內(nèi)容

啟動過程中解密class,完全內(nèi)存解密,不留下任何解密后的文件

在這里插入圖片描述

yml配置文件留下空白

在這里插入圖片描述

綁定機器啟動

下載到 classfinal-fatjar-1.2.1.jar 依賴,在當前依賴下cmd執(zhí)行java -jar classfinal-fatjar-1.2.1.jar -C命令,會自動生成一串機器碼

在這里插入圖片描述

將此生成好的機器碼,放到maven插件中的code里面即可。這樣,打包好的項目只能在生成機器碼的機器運行,其他機器則啟動不了項目。

以上就是SpringBoot項目防止反編譯的方案的詳細內(nèi)容,更多關(guān)于SpringBoot防止反編譯的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java Clone深拷貝與淺拷貝的兩種實現(xiàn)方法

    Java Clone深拷貝與淺拷貝的兩種實現(xiàn)方法

    今天小編就為大家分享一篇關(guān)于Java Clone深拷貝與淺拷貝的兩種實現(xiàn)方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 從入門到精通:Java List遍歷修改的完全指南

    從入門到精通:Java List遍歷修改的完全指南

    在Java中,我們經(jīng)常需要遍歷List集合并對其中的元素進行修改,這可以通過使用迭代器或for循環(huán)來實現(xiàn),需要的朋友可以參考下
    2023-10-10
  • 【面試】Spring事務(wù)面試考點吐血整理(建議珍藏)

    【面試】Spring事務(wù)面試考點吐血整理(建議珍藏)

    本文是小編給大家收藏整理的Spring事務(wù)面試考點,非常不錯,值得收藏,感興趣的朋友參考下吧
    2019-04-04
  • java多線程編程之管道通信詳解

    java多線程編程之管道通信詳解

    這篇文章主要為大家詳細介紹了java多線程編程之線程間的通信,探討使用管道進行通信,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 如何在spring boot中進行參數(shù)校驗示例詳解

    如何在spring boot中進行參數(shù)校驗示例詳解

    這篇文章主要介紹了如何在spring-boot中進行參數(shù)校驗及l(fā)ombok的使用詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 解決springboot配置文件組解決自動配置屬性無法注入問題

    解決springboot配置文件組解決自動配置屬性無法注入問題

    在使用Spring Boot時,可能會遇到配置文件屬性注入失敗的問題,本文描述了一個案例,其中嘗試使用profile文件組指定不同環(huán)境下的配置文件,但遇到了屬性無法成功注入的情況,提供的解決辦法是將Spring Boot的版本號從2.2.0.RELEASE升級到2.4.0
    2024-09-09
  • MyBatis圖文并茂講解注解開發(fā)一對多查詢

    MyBatis圖文并茂講解注解開發(fā)一對多查詢

    這篇文章主要介紹了SpringBoot中Mybatis注解一對多查詢的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Spring 靜態(tài)變量/構(gòu)造函數(shù)注入失敗的解決方案

    Spring 靜態(tài)變量/構(gòu)造函數(shù)注入失敗的解決方案

    我們經(jīng)常會遇到一下問題:Spring對靜態(tài)變量的注入為空、在構(gòu)造函數(shù)中使用Spring容器中的Bean對象,得到的結(jié)果為空。不要擔心,本文將為大家介紹如何解決這些問題,跟隨小編來看看吧
    2021-11-11
  • Mybatis-Plus select不列出全部字段的方法

    Mybatis-Plus select不列出全部字段的方法

    這篇文章主要介紹了Mybatis-Plus select不列出全部字段的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java實現(xiàn)從jar包中讀取指定文件的方法

    Java實現(xiàn)從jar包中讀取指定文件的方法

    這篇文章主要介紹了Java實現(xiàn)從jar包中讀取指定文件的方法,涉及java針對jar文件的讀取及查找相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08

最新評論