본문 바로가기

보안/시큐어코딩

[CERT JAVA 시큐어코딩표준-09] 락(LCK)

규칙


공유자원에 대한 동기화 설정시 락을 얻기,사용,반납에 대한 정확한 이해와 구현이 없다면 취약한 프로그램을 작성할 수 있다.

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.  정책을 완전히 구현하지 않은 클래스를 사용할 때 클라이언트 측에서 락하지 않는다.




작성중...