阅读 132

代码安全 | 第十七期:对象只定义了Equals和Hashcode方法之一的漏洞

代码安全 | 第十七期:对象只定义了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

软件安全是网络安全的最后一道防线。

来源:https://www.cnblogs.com/zktq/p/14808810.html

服务器评测 http://www.cncsto.com/ 

服务器测评 http://www.cncsto.com/ 


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐