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

SpringBoot項(xiàng)目防止反編譯的方案

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

場景

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

方案

第一種方案使用代碼混淆

采用proguard-maven-plugin插件

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

第二種方案使用代碼加密

采用classfinal-maven-plugin插件

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

ClassFinal項(xiàng)目源碼地址

項(xiàng)目操作

只需要在啟動(dòng)類的pom.xml文件中加如下插件即可,需要注意的是,改插件時(shí)要放到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. 加密后的項(xiàng)目需要設(shè)置javaagent來啟動(dòng),啟動(dòng)過程中解密class,完全內(nèi)存解密,不留下任何解密后的文件
                4. 啟動(dòng)加密后的jar,生成xxx-encrypted.jar,這個(gè)就是加密后的jar文件,加密后不可直接執(zhí)行
                5. 無密碼啟動(dòng)方式,java -javaagent:xxx-encrypted.jar -jar xxx-encrypted.jar
                6. 有密碼啟動(dòng)方式,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><!-- #表示啟動(dòng)時(shí)不需要密碼,事實(shí)上對于代碼混淆來說,這個(gè)密碼沒什么用,它只是一個(gè)啟動(dòng)密碼 -->
                <excludes>org.spring</excludes>
                <packages>${groupId}</packages><!-- 加密的包名,多個(gè)包用逗號(hào)分開 -->
                <cfgfiles>application.yml,application-dev.yml</cfgfiles><!-- 加密的配置文件,多個(gè)包用逗號(hào)分開 -->
                <libjars>hutool-all.jar</libjars> <!-- jar包lib下面要加密的jar依賴文件,多個(gè)包用逗號(hào)分開 -->
                <code>xxxx</code> <!-- 指定機(jī)器啟動(dòng),機(jī)器碼 -->
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>classFinal</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

</build>

啟動(dòng)方式

無密碼啟動(dòng)

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

有密碼啟動(dòng)

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

反編譯效果

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

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

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

在這里插入圖片描述

yml配置文件留下空白

在這里插入圖片描述

綁定機(jī)器啟動(dòng)

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

在這里插入圖片描述

將此生成好的機(jī)器碼,放到maven插件中的code里面即可。這樣,打包好的項(xiàng)目只能在生成機(jī)器碼的機(jī)器運(yùn)行,其他機(jī)器則啟動(dòng)不了項(xiàng)目。

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

相關(guān)文章

  • Springboot整合ip2region實(shí)現(xiàn)用戶ip歸屬地獲取

    Springboot整合ip2region實(shí)現(xiàn)用戶ip歸屬地獲取

    ip2region是一個(gè)離線IP地址定位庫和IP定位數(shù)據(jù)管理框架,提供了眾多主流編程語言的 xdb 數(shù)據(jù)生成和查詢客戶端實(shí)現(xiàn),下面我們來看看如何使用ip2region實(shí)現(xiàn)用戶ip歸屬地獲取吧
    2025-05-05
  • springBoot集成jsoup解決安全漏洞之XSS注入攻擊問題

    springBoot集成jsoup解決安全漏洞之XSS注入攻擊問題

    這篇文章主要介紹了springBoot集成jsoup解決安全漏洞之XSS注入攻擊問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Java中的Set、List、Map的用法與區(qū)別介紹

    Java中的Set、List、Map的用法與區(qū)別介紹

    這篇文章主要介紹了Java中的Set、List、Map的用法與區(qū)別,需要的朋友可以參考下
    2016-06-06
  • 解決try-catch捕獲異常信息后Spring事務(wù)失效的問題

    解決try-catch捕獲異常信息后Spring事務(wù)失效的問題

    這篇文章主要介紹了解決try-catch捕獲異常信息后Spring事務(wù)失效的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 關(guān)于knife4j的使用及配置

    關(guān)于knife4j的使用及配置

    這篇文章主要介紹了關(guān)于knife4j的使用及配置,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • springboot+vue+elementsUI實(shí)現(xiàn)分角色注冊登錄界面功能

    springboot+vue+elementsUI實(shí)現(xiàn)分角色注冊登錄界面功能

    這篇文章主要給大家介紹了關(guān)于springboot+vue+elementsUI實(shí)現(xiàn)分角色注冊登錄界面功能的相關(guān)資料,Spring?Boot和Vue.js是兩個(gè)非常流行的開源框架,可以用來構(gòu)建Web應(yīng)用程序,需要的朋友可以參考下
    2023-07-07
  • IDEA中文亂碼的幾種常見解決方案

    IDEA中文亂碼的幾種常見解決方案

    IntelliJ IDEA 如果不進(jìn)行相關(guān)設(shè)置,可能會(huì)導(dǎo)致控制臺(tái)中文亂碼、配置文件中文亂碼等問題,非常影響編碼過程中進(jìn)行問題追蹤,所以本文給大家介紹了IDEA中文亂碼的幾種常見解決方案,需要的朋友可以參考下
    2025-04-04
  • springboot?靜態(tài)方法中使用@Autowired注入方式

    springboot?靜態(tài)方法中使用@Autowired注入方式

    這篇文章主要介紹了springboot?靜態(tài)方法中使用@Autowired注入方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 解決遇到Cannot resolve ch.qos.logback:logback-classic:1.2.3錯(cuò)誤的問題

    解決遇到Cannot resolve ch.qos.logback:logback-classic:

    當(dāng)使用Maven配置項(xiàng)目依賴時(shí),可能會(huì)遇到無法解析特定版本的錯(cuò)誤,例如,logback-classic版本1.2.3可能無法在配置的倉庫中找到,解決方法包括檢查倉庫是否包含所需版本,或更新到其他可用版本,可通過Maven官網(wǎng)搜索并找到適用的版本,替換依賴配置中的版本信息
    2024-09-09
  • Springboot MDC+logback實(shí)現(xiàn)日志追蹤的方法

    Springboot MDC+logback實(shí)現(xiàn)日志追蹤的方法

    MDC(Mapped Diagnostic Contexts)映射診斷上下文,該特征是logback提供的一種方便在多線程條件下的記錄日志的功能,這篇文章主要介紹了Springboot MDC+logback實(shí)現(xiàn)日志追蹤的方法,需要的朋友可以參考下
    2024-04-04

最新評論

中卫市| 崇州市| 屯昌县| 宜阳县| 泽普县| 长丰县| 道孚县| 信宜市| 东乡族自治县| 望奎县| 镇沅| 乾安县| 巴马| 乌兰浩特市| 襄汾县| 霍林郭勒市| 潮州市| 察雅县| 铜川市| 墨江| 扎兰屯市| 萍乡市| 措美县| 徐闻县| 临西县| 万宁市| 东乌珠穆沁旗| 嘉义县| 合作市| 镇雄县| 田阳县| 略阳县| 德格县| 枣强县| 上饶县| 阿拉善盟| 临高县| 家居| 湘阴县| 台南县| 凤台县|