본문 바로가기
cs

[시큐어 코딩/Secure Coding] API 악용 - equals()와 hashCode() 하나만 정의

by 최연탄 2019. 2. 14.
728x90
반응형

참고: 안드로이드 시큐어코딩 가이드
참고: CWE-581 Object Model Violation: Just One of Equals and Hashcode Defined
참고: Seven pernicious kingdoms

설명

Java 표준에 따르면 Java의 같은 객체는 같은 해시코드를 가져야합니다. 즉 "a.equals(b) == true" 이면 "a.hashCode() == b.hashCode()” 이어야 합니다. 따라서 한 클래스 내에 equals()와 hashCode()를 구현할 때 둘 다 구현하거나 둘 다 구현하지 않아야 합니다.

안전한 코딩

한 클래스 내에 equals()를 정의했으면 hashCode()도 정의해야 하고 hashCode()를 정의했으면 equals()도 정의해야 합니다.

예제 (Java)

equals()와 hashCode() 중 하나만 정의 하여 사용했습니다.

위의 코드처럼 equals()와 hashCode() 모두를 정의해야합니다.

반응형

댓글