System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及軟件開發,尤其涉及一種序列化和反序列化監測方法、裝置及計算機設備。
技術介紹
1、在日常的項目開發中,經常會遇到需要將java的對象進行序列化為字符串保存在文件中的情況,在需要使用時再將字符串反序列化為對應的對象。或者是從服務端下發的字符串內容反序列化為對應的對象,以將對象的狀態信息轉換為可以存儲或傳輸的格式。
2、在項目在打包的過程中,出于減少包體大小、安全性等因素考量,會將類的字段、方法進行混淆優化,以減少包體積,提高安全性。在這一過程中,字段的名稱可能會發生改變,若在書寫代碼時遺漏了字段的注解,就會導致反序列化時不能通過鍵查找到對應的值,使得反序列化失敗,影響業務的正常運行。
技術實現思路
1、本申請的目的旨在至少能解決上述的技術缺陷之一,特別是現有技術中出于減少包體大小、安全性等因素考量,會將類的字段、方法進行混淆優化,以減少包體積,提高安全性。在這一過程中,字段的名稱可能會發生改變,若在書寫代碼時遺漏了字段的注解,就會導致反序列化時不能通過鍵查找到對應的值,使得反序列化失敗,影響業務的正常運行的技術缺陷。
2、第一方面,本申請提供了一種序列化和反序列化監測方法,所述方法包括:
3、對序列化工具類、序列化方法和反序列化方法進行調用監測;
4、當滿足預設的觸發條件時,確定目標參數;
5、在所述目標參數中的各個字段中標記帶有預設的目標關鍵字的字段,并遍歷所述目標參數中未標記的字段,以檢查遍歷的各個字段是否有添
6、若遍歷的各個字段中存在未添加所述序列化名稱注解的字段,則將遍歷的各個字段中未添加所述序列化名稱注解的字段確定為異常字段,并根據各個異常字段觸發異常提示。
7、在其中一個實施例中,所述觸發條件為:
8、監測到存在參數傳入所述序列化工具類中,
9、或,
10、監測到所述序列化方法或所述反序列化方法被調用。
11、在其中一個實施例中,所述確定目標參數的步驟,包括:
12、當監測到存在參數傳入所述序列化工具類中時,將傳入的參數確定為目標參數。
13、在其中一個實施例中,所述確定目標參數的步驟,包括:
14、當監測到所述序列化方法或所述反序列化方法被調用時,將所調用的方法確定為目標方法;
15、將所述目標方法轉換為靜態方法,以從所述靜態方法中獲取傳入的目標參數。
16、在其中一個實施例中,所述將所述目標方法轉換為靜態方法的步驟,包括:
17、調用預設的asm庫將字節碼中與所述目標方法對應的代碼中的invokevirtual指令修改為invokestatic指令,以靜態方法調用所述目標方法,以完成對所述目標方法的轉換,并得到所述目標方法對應的靜態方法。
18、在其中一個實施例中,所述目標關鍵字為transient?關鍵字;所述在所述目標參數中的各個字段中標記帶有預設的目標關鍵字的字段的步驟,包括:
19、遍歷所述目標參數中的每個字段,當遍歷到帶有所述transient?關鍵字的字段時,對該字段進行標記。
20、在其中一個實施例中,所述根據各個異常字段觸發異常提示的步驟,包括:
21、根據各個異常字段,確定每個異常字段的代碼位置;
22、根據每個異常字段的代碼位置,分別確定各個異常字段的代碼位置對應的跳轉鏈接;
23、根據每個異常字段的代碼位置對應的跳轉鏈接,生成每個異常字段的異常信息,并拋出每個異常字段的異常信息。
24、第二方面,本申請提供了一種序列化和反序列化監測裝置,所述裝置包括:
25、調用監測模塊,用于對序列化工具類、序列化方法和反序列化方法進行調用監測;
26、參數確定模塊,用于當滿足預設的觸發條件時,確定目標參數;
27、遍歷檢查模塊,用于在所述目標參數中的各個字段中標記帶有預設的目標關鍵字的字段,并遍歷所述目標參數中未標記的字段,以檢查遍歷的各個字段是否有添加序列化名稱注解;所述目標關鍵字用于標識不需要序列化的字段;
28、異常提示模塊,用于若遍歷的各個字段中存在未添加所述序列化名稱注解的字段,則將遍歷的各個字段中未添加所述序列化名稱注解的字段確定為異常字段,并根據各個異常字段觸發異常提示。
29、第三方面,本申請提供了一種存儲介質,所述存儲介質中存儲有計算機可讀指令,所述計算機可讀指令被一個或多個處理器執行時,使得一個或多個處理器執行如上述任一項實施例所述序列化和反序列化監測方法的步驟。
30、第四方面,本申請提供了一種計算機設備,包括:一個或多個處理器,以及存儲器;
31、所述存儲器中存儲有計算機可讀指令,所述一個或多個處理器執行時所述計算機可讀指令時,執行如上述任一項實施例所述序列化和反序列化監測方法的步驟。
32、從以上技術方案可以看出,本申請實施例具有以下優點:
33、本申請提供的序列化和反序列化監測方法、裝置及計算機設備,該方法包括:對序列化工具類、序列化方法和反序列化方法進行調用監測,當滿足預設的觸發條件時,確定所要檢查的目標參數,為了排除不需要序列化的字段,在目標參數中的各個字段中標記帶有預設的目標關鍵字的字段,然后遍歷目標參數中未標記的字段,以檢查遍歷的各個字段是否有添加序列化名稱注解,若遍歷的各個字段中存在未添加所述序列化名稱注解的字段,則將這些字段確定為異常字段,并根據各個異常字段觸發異常提示。通過對需要添加但未添加序列化名稱注解的字段進行異常提示,以提醒開發人員處理,避免項目上線或開發測試階段才發現這一問題,導致業務因反序列化失敗而產生異常,以提升項目管理以及風險管理的水平。
本文檔來自技高網...【技術保護點】
1.一種序列化和反序列化監測方法,其特征在于,所述方法包括:
2.根據權利要求1所述的序列化和反序列化監測方法,其特征在于,所述觸發條件為:
3.根據權利要求1或2所述的序列化和反序列化監測方法,其特征在于,所述確定目標參數的步驟,包括:
4.根據權利要求1或2所述的序列化和反序列化監測方法,其特征在于,所述確定目標參數的步驟,包括:
5.根據權利要求4所述的序列化和反序列化監測方法,其特征在于,所述將所述目標方法轉換為靜態方法的步驟,包括:
6.根據權利要求1所述的序列化和反序列化監測方法,其特征在于,所述目標關鍵字為transient?關鍵字;所述在所述目標參數中的各個字段中標記帶有預設的目標關鍵字的字段的步驟,包括:
7.根據權利要求1所述的序列化和反序列化監測方法,其特征在于,所述根據各個異常字段觸發異常提示的步驟,包括:
8.一種序列化和反序列化監測裝置,其特征在于,所述裝置包括:
9.一種存儲介質,其特征在于:所述存儲介質中存儲有計算機可讀指令,所述計算機可讀指令被一個或多
10.一種計算機設備,其特征在于,包括:一個或多個處理器,以及存儲器;
...【技術特征摘要】
1.一種序列化和反序列化監測方法,其特征在于,所述方法包括:
2.根據權利要求1所述的序列化和反序列化監測方法,其特征在于,所述觸發條件為:
3.根據權利要求1或2所述的序列化和反序列化監測方法,其特征在于,所述確定目標參數的步驟,包括:
4.根據權利要求1或2所述的序列化和反序列化監測方法,其特征在于,所述確定目標參數的步驟,包括:
5.根據權利要求4所述的序列化和反序列化監測方法,其特征在于,所述將所述目標方法轉換為靜態方法的步驟,包括:
6.根據權利要求1所述的序列化和反序列化監測方法,其特征在于,所述目標關鍵字為tr...
【專利技術屬性】
技術研發人員:梁偉健,廖志勤,
申請(專利權)人:廣州趣丸網絡科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。