物件只定義了Equals和Hashcode方法之一的漏洞
本期主題為違規的物件模型:物件只定義了Equals和Hashcode方法之一漏洞的相關介紹。
一、什麼是“違規的物件模型:物件只定義了Equals和Hashcode方法之一”的漏洞?
也就是同一個物件沒有同時包含equals和hashcode。因為Java物件需要遵守許多與相等相關的約束條件。其中一個約束條件是兩個變數相等則兩個變數必須具有相同的雜湊值。換句話說,如果a.equals(b)== true,則a.hashCode()== b.hashCode()。
二、 “違規的物件模型:物件只定義了Equals和Hashcode方法之一”的漏洞構成條件有哪些?
滿足以下條件,就構成了一個該型別的安全漏洞:
一個類中,只有equals或者hashCode方法中的一個。
三、 “違規的物件模型:物件只定義了Equals和Hashcode方法之一”的漏洞會造成哪些後果?
關鍵詞:資料問題;程式執行異常
在集-閤中,相等的物件期望擁有相同的雜湊值。若某個類定義了equals方法但是沒有定義 hashCode方法,則相等的物件可能產生不同的雜湊值。
四、“違規的物件模型:物件只定義了Equals和Hashcode方法之一”的漏洞的防範和修補方法有哪些?
在定義了equals方法的類中同時定義Hashcode方法。
五、 “違規的物件模型:物件只定義了Equals和Hashcode方法之一”的漏洞樣例:
用 悟空靜態程式碼檢測分析上述程式程式碼,則可以發現程式碼中存在著“違規的物件模型:只定義了Equals和Hashcode之一” 導致的程式碼缺陷,如下圖:
“違規的物件模型:只定義了Equals和Hashcode之一“在CWE中被編號為CWE-581: Object Model Violation: Just One of Equals and Hashcode Defined
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2792550/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式碼安全測試第十七期:物件只定義了Equals和Hashcode方法之一的漏洞物件
- String的equals和hashCode方法
- 細說equals()方法和hashCode()方法
- 詳解equals()方法和hashCode()方法
- 搞懂 Java equals 和 hashCode 方法Java
- DDD實體值物件的equals和hashcode方法實現 - wimdeblauwe物件
- HashCode 和 Equals 的使用 - 使用自定義物件作為HashMap的Key例子物件HashMap
- 自動生成hashcode和equals方法
- Java基礎系列-equals方法和hashCode方法Java
- java自定義equals函式和hashCode函式Java函式
- equals()和hashCode()的區別
- 重寫Object.equals()方法和Object.hashCode()方法Object
- equals & hashCode
- java~重寫hashcode和equalsJava
- java為什麼要重寫hashCode和equals方法Java
- equals&hashCode
- hashCode()與equals()
- JAVA基礎(一)equals和==和hashCodeJava
- Java基礎- ==和equals和hashCode的區別Java
- hashCode()和equals()的區別?(skycto JEEditor)
- 關於重寫equals()和hashCode()的思考
- ==、equals、hashcode總結
- Object類-equals()、==、hashCode()Object
- 重寫equals()時為什麼也得重寫hashCode()之深度解讀equals方法與hashCode方法淵源
- Java之所有物件的公用方法>9.Always override hashCode when you override equalsJava物件IDE
- Java中hashcode和equals效能注意點 - ShaiJavaAI
- 重寫equals()方法時,需要同時重寫hashCode()方法
- 關於equals()和hashcode()的一些約定
- 『Java 語法基礎』對 equals() 和 hashCode() 的理解Java
- “==”、“equals()”、“hashcode()”之間的祕密
- Hashcode相同但是equals不同的例子
- 關於HashMap的key重寫hashcode和equals的理解HashMap
- equals與hashCode關係梳理
- 面試官愛問的equals與hashCode面試
- 建議重寫equals方法時也一併重寫hashCode方法
- Java重寫equals方法時為什麼要重寫hashcode方法Java
- JAVA基礎-自問自答學hashCode和equalsJava
- 程式設計師必須搞清的概念equals和=和hashcode的區別程式設計師