본문 바로가기

Secure Coding3

[시큐어 코딩/Secure Coding] API 악용 - equals()와 hashCode() 하나만 정의 참고: 안드로이드 시큐어코딩 가이드 참고: 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()도 정의해야 합니다. .. 2019. 2. 14.
[시큐어 코딩/Secure Coding] API 악용 - null 파라미터 미검사 참고: 안드로이드 시큐어코딩 가이드 참고: Seven pernicious kingdoms 설명 Java 표준에 따르면 Object.equals(), Comparable.compareTo(), Comparator.compare()의 구현시 파라미터로 null이 넘어와도 특정한 값을 리턴해야 합니다. 이 규칙을 따르지 않으면 예기치 못한 동작이 발생할 수 있습니다. 안전한 코딩 모든 메소드의 구현에서 파라미터를 참조하는 구문을 사용한다면 그 넘겨받은 파라미터가 null 인지 비교해야 합니다. 예제 (Java) // Unsafe class TestApp { public static void main(String[] args) { TestApp object = new TestApp(); boolean test .. 2019. 2. 14.
[시큐어 코딩/Secure Coding] 입력 데이터 검증 및 표현 - 상대 경로 탐색 참고: 안드로이드 시큐어코딩 가이드 참고: CWE-23: Relative Path Traversal 참고: Seven pernicious kingdoms설명파라미터를 통하여 제한된 디렉토리 내에서만 파일접근을 허용하도록 만들 경우, 적절한 검증 절차를 거치지 않으면 ‘..’ 같은 문자열을 통해 해당 디렉토리 외부에 있는 경로에 대한 접근을 허용하는 문제가 발생할 수 있습니다.안전한 코딩기법모든 입력을 악의적 입력이라 가정하고 좋은 입력만 허용하는 전략을 사용합니다. 즉 요구사항을 엄격히 준수하는 입력가능 허용 목록을 사용하고 엄격히 따르지 않는 모든 입력은 거부하는 것입니다. 상기 서술한 바와 같이 상대경로 접근과 같은 문자열이 파라미터로 넘어올 경우 원칙적으로 거부해야 하지만 그렇지 못할 경우 repl.. 2019. 2. 11.