규칙
공유자원에 대한 동기화 설정시 락을 얻기,사용,반납에 대한 정확한 이해와 구현이 없다면 취약한 프로그램을 작성할 수 있다.
LCK00-J. 신뢰하지 않는 코드에 접근하는 클래스를 동기화하려면 private final 락 객체를 사용한다.
LCK01-J. 재사용될 수 있는 객체를 이용해 동기화하지 않는다.
LCK02-J. getClass()에 의해 반환된 클래스 객체를 이용해 동기화 하지 않는다.
LCK03-J. 상위 수준의 동시성 객체를 이용해 동기화하지 않는다.
LCK04-J. 지원 컬렉션에 접근할 수 있을때 컬렉션 뷰로 동기화 하지 않는다.
LCK05-J. 신뢰하지 않는 코드가 수정할 수 있는 static 필드를 접근할 때는 동기화 한다.
LCK06-J. 공유된 static데이터를 보호하고자 인스턴스 객체를 락으로 사용하지 않는다.
LCK07-J. 락을 동일한 순서로 요청하고 해제하여 데드락을 피한다.
LCK08-J. 예외 조건 처리시 활성화된 락을 반드시 해제한다.
LCK09-J. 락으 활성화한 후 블럭될 수 있는 연산을 수행하지 않는다.
LCK10-J. 이중검사 동기화의 잘못된 형태를 사용하지 않는다.
LCK11-J. 락 정책을 완전히 구현하지 않은 클래스를 사용할 때 클라이언트 측에서 락하지 않는다.
작성중...
'보안 > 시큐어코딩' 카테고리의 다른 글
[CERT JAVA 시큐어코딩표준-11] 스레드 풀(TPS) (0) | 2013.12.10 |
---|---|
[CERT JAVA 시큐어코딩표준-10] 스레드 API(THI) (0) | 2013.12.10 |
[CERT JAVA 시큐어코딩표준-08] 가시성과 원시성(VNA) (0) | 2013.12.10 |
[CERT JAVA 시큐어코딩표준-07] 예외처리(ERR) (0) | 2013.12.10 |
[CERT JAVA 시큐어코딩표준-06] 메서드(MET) (0) | 2013.12.10 |