본문 바로가기

PMD

[한글화 시리즈-19] Security Code Guidelines

Security Code Guidelines

이 룰셋은 Sun이 배포한 보안 가이드라인을 확인하는 룰들을 포함한다.



MethodReturnsInternalArray

클래스 내부의 배열을 직접적으로 반환하면 사용자는 외부에서 임의로 내부 배열을 수정할 수 있다. 이는 매우 치명적인 오류를 발생시킬 수 있는 원인이 된다. 안전한 방법은 내부의 배열을 복사하여 전달하는 방법이다.

public class SecureSystem {
  UserData [] ud;
  public UserData [] getUserData() {
    // 절대로 내부의 배열을 직접적으로 반환하지 말자.
    // System.arraycopy등을 이용하여 배열을 복사하여 전달하자.
    return ud;
  }
}

ArrayIsStoredDirectly

생성자와 메소드는 전달받은 배열을 복제 객체를 만들거나 배열의 복사본을 저장해야한다. 이는 외부 사용자가 임의로 내부의 기능(functionality)을 변경하는 것을 막는다.

public class Foo {
 private String [] x;
  public void foo (String [] param) {
      //배열을 아래와 같이 직접적으로 저장하지말자!
      //배열을 복사해서 저장하도록하자.
      this.x=param;
  }
}

해당 URL: http://pmd.sourceforge.net/pmd-4.2.6/rules/sunsecure.html