最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對SpringBoot項目Jar包進行加密防止反編譯

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

場景

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

方案

第一種方案使用代碼混淆

采用proguard-maven-plugin插件

在單模塊中此方案還算簡單,但是現(xiàn)在項目一般都是多模塊,一個模塊依賴多個公共模塊。那么使用此方案就比較麻煩,配置復雜,文檔難懂,各模塊之間的調(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. 加密后的項目需要設置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項目Jar包進行加密防止反編譯的詳細內(nèi)容,更多關于SpringBoot Jar包加密的資料請關注腳本之家其它相關文章!

相關文章

  • Java?MyBatis實戰(zhàn)之QueryWrapper中and和or拼接技巧大全

    Java?MyBatis實戰(zhàn)之QueryWrapper中and和or拼接技巧大全

    在Java中QueryWrapper是MyBatis-Plus框架中的一個查詢構(gòu)造器,它提供了豐富的查詢方法,其中包括and和or方法,可以用于構(gòu)建復雜的查詢條件,這篇文章主要給大家介紹了關于Java?MyBatis實戰(zhàn)之QueryWrapper中and和or拼接技巧的相關資料,需要的朋友可以參考下
    2024-07-07
  • MybatisPlus中的insert操作詳解

    MybatisPlus中的insert操作詳解

    這篇文章主要介紹了MybatisPlus中的insert操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 聊聊Spring循環(huán)依賴三級緩存是否可以減少為二級緩存的情況

    聊聊Spring循環(huán)依賴三級緩存是否可以減少為二級緩存的情況

    這篇文章主要介紹了聊聊Spring循環(huán)依賴三級緩存是否可以減少為二級緩存的情況,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java中幾種http請求方式示例詳解

    java中幾種http請求方式示例詳解

    在日常工作和學習中有很多地方都需要發(fā)送HTTP請求,下面這篇文章主要給大家介紹了關于java中幾種http請求方式的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Java連接MySQL數(shù)據(jù)庫實例

    Java連接MySQL數(shù)據(jù)庫實例

    這篇文章介紹了Java連接MySQL數(shù)據(jù)庫實例的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Spring中使用Async進行異步功能開發(fā)實戰(zhàn)示例(大文件上傳為例)

    Spring中使用Async進行異步功能開發(fā)實戰(zhàn)示例(大文件上傳為例)

    本文以大文件上傳為例,首先講解在未進行程序異步化時,程序的運行機制和具體表現(xiàn),然后講解如何進行異步化的改造,讓程序進行異步執(zhí)行,通過本文不僅能讓你掌握如何進行Event的事件開發(fā),同時還能掌握在Spring中如何進行異步開發(fā),熟悉@Async的具體用法,感興趣的朋友一起看看吧
    2024-08-08
  • spring啟動錯誤Singleton bean creation not allowed while the singletons of this factory are indestruction

    spring啟動錯誤Singleton bean creation not al

    本文主要介紹了spring啟動錯誤Singleton bean creation not allowed while the singletons of this factory are indestruction,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Java將word文件轉(zhuǎn)成pdf文件的操作方法

    Java將word文件轉(zhuǎn)成pdf文件的操作方法

    這篇文章主要介紹了Java將word文件轉(zhuǎn)成pdf文件的操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • java冷知識:javac AbstractProcessor詳解

    java冷知識:javac AbstractProcessor詳解

    這篇文章主要介紹了java冷知識:javac AbstractProcessor詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 使用Pinyin4j進行拼音分詞的方法

    使用Pinyin4j進行拼音分詞的方法

    下面小編就為大家分享一篇使用Pinyin4j進行拼音分詞的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論

山阳县| 康马县| 武平县| 定远县| 五指山市| 屯留县| 汕尾市| 沙田区| 曲阜市| 冀州市| 大新县| 龙山县| 铅山县| 东至县| 调兵山市| 江油市| 那坡县| 柳江县| 玉田县| 沧源| 赤峰市| 尚义县| 贵阳市| 长兴县| 调兵山市| 湛江市| 尼勒克县| 邢台市| 吕梁市| 石楼县| 云和县| 璧山县| 景洪市| 金乡县| 翁牛特旗| 鹤峰县| 汤阴县| 金沙县| 手游| 沁源县| 准格尔旗|