본문 바로가기
공부/KISA

Private 배열에 Public 데이터 할당 - KISA 소프트웨어 개발 보안 가이드

by Skogkatt의 개인 블로그 2020. 7. 22.
반응형

https://www.kisa.or.kr/public/laws/laws3.jsp

 

기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원

기술안내서 가이드 한국인터넷진흥원 기술안내서 가이드 입니다. 게시판 목록 보기 기술안내서 가이드 표 대분류 소분류 기술안내서 가이드 대상 수준 인터넷 진흥 및 이용 활성화 인터넷 진흥

www.kisa.or.kr

구현 단계 시큐어코딩 가이드 - 캡슐화 - Private 배열에 Public 데이터 할당

가. 개요

  • public으로 선언된 메소드의 인자가 private 선언된 배열에 저장되면, private배열을 외부에서 접근하여 배열 수정과 객체 속성 변경이 가능해진다.

나. 보안대책

  • public으로 선언된 메서드의 인자를 private선언된 배열로 저장되지 않도록 한다.
  • 인자로 들어온 배열의 복사본을 생성하고 clone() 메소드를 통해 복사된 원소를 저장하도록 하여 private변수에 할당하여 private 선언된 배열과 객체 속성에 대한 의도하지 않게 수정되는 것을 방지한다. 만약 배열 객체의 원소가 String 타입 등과 같이 변경이 되지 않는 경우에는 인자로 들어온 배열의 복사본을 생성하여 할당한다.

다. 코드예제

JAVA
더보기

아래의 코드는 멤버 변수 userRoles는 private로 선언되었지만 public으로 선언된 setUserRoles 메소드를 통해 인자가 할당되어 배열의 원소를 외부에서 변경할 수 있다. 이를 통해 의도하지 않은 배열과 원소에 대한 객체속성 수정이 발생할 수 있다.

인자로 들어온 배열의 복사본을 생성하고 clone() 메소드를 통해 복사된 원소를 저장하도록 하여 private변수에 할당하면 private으로 할당된 배열과 원소에 대한 의도하지 않은 수정을 방지 할 수 있다.

아래의 코드는 멤버 변수 userRoles는 private로 선언되었지만 public으로 선언된 setUserRoles 메소드를 통해 인자가 할당되어 배열의 원소를 외부에서 변경할 수 있다. 이를 통해 의도하지 않은 배열에 대한 수정이 발생할 수 있다.

인자로 들어온 배열의 복사본을 생성하여 private변수에 할당하면 private으로 할당된 배열에 대한 의도하지 않은 수정을 방지할 수 있다.

 

C#
더보기

아래의 코드는 멤버 변수 userRoles는 private로 선언되었지만 public으로 선언된 setUserRoles 메소드를 통해 인자가 할당되어 배열의 원소를 외부에서 변경할 수 있다. 이를 통해 의도하지 않은 배열과 원소에 대한 객체 속성 수정이 발생할 수 있다.

객체가 클래스의 private member를 수정하지 않도록 하여야 한다.


참고자료

 

반응형

댓글