티스토리 뷰

반응형

transient 은 Serialize하는 과정 중 제외하고 싶은 항목에 선언하는 키워드입니다.

 

 

Transient 을 사용하는 이유는?

 

보안정책 상 패스워드, 주민등록 번호와 같은 개인정보를 직렬화(Serialize) 과정에서 제외하고 싶은 경우에 적용합니다.

그 외에 직렬화 과정 후 데이터를 전송을 하고 싶지 않을 때 선언하여 예외처리 합니다.

 

 

Transient 코드로 알아보기.

 

간단히 회원정보를 저장하는 Data을 갖고 Transient 되는 것을 확인하겠습니다.

 

Model (Member)

 

Main

아래의 이미지 처럼 직렬화가 잘 된 것을 확인할 수 있습니다.

Name 변수에 transient keyword를 추가하여 결과를 보겠습니다.

 

name field는 유지되지만 값은 null로 대입됩니다.

 

마무리

 

Transient 을 활용하여 직렬화 (Serialize)의 예외처리를 확인하였습니다.

Transient 을 사용 시에는 해당 Data가 필요 여부 파악이 중요합니다.

만약 제대로 파악 없이 Data를 제외하였을 경우 서비스 장애에 이상이 있으면 원인 파악하는데 힘들겠죠.

보안적인 측면에서는 장점이지만 쉽게 보안이 되는만큼 프로젝트 정책과 프로세스에 따른 분석 후 사용하는 것을 권장합니다.

 

 

참고

https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.3.1.4

https://nesoy.github.io/articles/2018-06/Java-transient

반응형
댓글