Java lang

[Java] 자바 방어적 복사와 불변객체 생성

Razelo 2021. 1. 4. 17:48

자바에서 등장하는 방어적 복사와 불변객체 생성에 대한 내용을 알아보도록 하자. 

 

용어가 어렵지만 사실 내용은 그다지 어려운 내용은 아니다. 

 

 

방어적 복사는 즉

매개변수의 유효성을 검사하기 전에 방어적 복사본을 만들고, 이 복사본으로 유효성을 검사한 점에 주목하자. 순서가 부자연스러워 보이겠지만 반드시 이렇게 작성해야 한다. 멀티스레딩 환경이라면 원본 객체의 유효성을 검사한 후 복사본을 만드는 그 찰나의 취약한 순간에 다른 스레드가 원본 객체를 수정할 위험이 있기 때문이다. 방어적 복사를 매개변수 유효성 검사 전에 수행하면 이런 위험에서 해방될 수 있다. 컴퓨터 보안 커뮤니티에서는 이를 검사시점/사용시점(time of check/time of use) 공격 혹은 영어 표기를 줄여서 TOCTOU 공격이라 한다.

(위 블로그에서 인용)

 

라고 말할 수 있다. 그리고

가장 쉽게 방어적 기법을 설계하는 법은 Collections unmodifiable... 시리즈를 이용하는 것이다.

 

 

 


아래 블로그에서 많은 도움을 받았다.

 

 

감사합니다. 

 

https://tecoble.techcourse.co.kr/post/2021-04-26-defensive-copy-vs-unmodifiable/

 

방어적 복사와 Unmodifiable Collection

방어적 복사 vs Unmodifiable Collection…

tecoble.techcourse.co.kr

 

 

 

https://johngrib.github.io/wiki/defensive-copy/

 

방어적 복사 (defensive copy)

검사시점/사용시점 취약점을 방어하자

johngrib.github.io

 

https://velog.io/@conatuseus/Java-Immutable-Object%EB%B6%88%EB%B3%80%EA%B0%9D%EC%B2%B4

 

[Java] Immutable Object(불변객체)

면접에서 "자바에서 불변객체에 대해 설명해주세요.."라는 질문을 받았다.속으로 'final만 붙이면 불변객체 아닌가?'라는 생각을 했지만 불변객체에 대해 공부하지 않아 모른다고 했다...그래서

velog.io

 

https://www.daleseo.com/java9-immutable-collections/

 

Java9의 불변 컬렉션 생성

Engineering Blog by Dale Seo

www.daleseo.com

 

반응형