程式碼安全測試第十七期:物件只定義了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-2776295/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物件只定義了Equals和Hashcode方法之一的漏洞物件
- String的equals和hashCode方法
- 細說equals()方法和hashCode()方法
- 詳解equals()方法和hashCode()方法
- 搞懂 Java equals 和 hashCode 方法Java
- DDD實體值物件的equals和hashcode方法實現 - wimdeblauwe物件
- HashCode 和 Equals 的使用 - 使用自定義物件作為HashMap的Key例子物件HashMap
- 程式碼安全測試第七期:不安全的反射漏洞缺陷反射
- 程式碼安全測試第六期:XPath注入漏洞
- 自動生成hashcode和equals方法
- 程式碼安全測試第九期:Switch中省略了break語句導致的程式碼缺陷漏洞
- Java基礎系列-equals方法和hashCode方法Java
- 程式碼安全測試第五期:OS命令注入漏洞
- 程式碼安全測試第十期:日誌偽造漏洞
- java自定義equals函式和hashCode函式Java函式
- equals()和hashCode()的區別
- 程式碼安全測試第四期:可逆的單向雜湊漏洞
- 程式碼安全測試第二期:URL重定向(跳轉)漏洞
- 重寫Object.equals()方法和Object.hashCode()方法Object
- equals & hashCode
- 程式碼安全測試第三期:路徑遍歷漏洞的防範與檢測
- 程式碼安全測試第一期:什麼是SQL隱碼攻擊漏洞?SQL
- java~重寫hashcode和equalsJava
- 程式碼安全測試第十九期:用不安全的授權建立臨時檔案漏洞
- java為什麼要重寫hashCode和equals方法Java
- equals&hashCode
- hashCode()與equals()
- JAVA基礎(一)equals和==和hashCodeJava
- 程式碼安全測試第十二期:LDAP注入漏洞LDA
- Java基礎- ==和equals和hashCode的區別Java
- 程式碼安全測試第二十九期:通用異常捕獲宣告缺陷漏洞
- hashCode()和equals()的區別?(skycto JEEditor)
- 關於重寫equals()和hashCode()的思考
- 程式碼安全測試第十五期:跨站指令碼漏洞指令碼
- ==、equals、hashcode總結
- Object類-equals()、==、hashCode()Object
- 程式設計師必須搞清的概念equals和=和hashcode的區別程式設計師
- 重寫equals()時為什麼也得重寫hashCode()之深度解讀equals方法與hashCode方法淵源