보안약점 | 설명 |
6.1 잘못된 세션에 의한 데이터 정보노출 |
잘못된 세션에 의해 인가되지 않은 사용자에게 중요정보가 노출 될 수 있는 보안약점
|
6.2 제거되지 않고 남은 디버그 코드 |
디버깅을 위해 작성된 코드를 통해 인가되지 않은 사용자에게 중요정보가 노출될 수 있는 보안약점
logger.d("personal info"); 삭제 |
6.3 시스템 데이터 정보노출 |
사용자가 볼 수 있는 오류 메시지나 스택 정보에 시스템 내부 데이터나 디버깅 관련 정보가 공개되는 보안약점
logger.e(e.getMessage()); => logger.e("NullPointException") |
6.4 Public 메소드부터 반환된 Private 배열 |
Private로 선언된 배열을 Public으로 선언된 메서드를 통해 반환 (return)하면, 그 배열의 레퍼런스가 외부에 공개되어 외부 에서 배열이 수정될 수 있 는 보안약점
ex) private Data[] datas; public Data[] getData() { return datas; } => public Data[] getData() { Data[] datas=newData[datas.length]; for(inti =0; i < datas.length; i++){ datas[i] = this.datas[i].clone(); } return datas; } |
6.5 Private 배열에 Public 데이터 할당 | Public으로 선언된 데이터 또는 메서드의 파라미터가 Private로 선언된 배 열에 저장되면, Private 배열을 외부에서 접근할 수 있게 되는 보안약점 ex) private Data[] datas; public void setData(Data[] datas) { this.datas = datas; } => public void setData(Data[] datas) { this.datas = new Data[datas.length]; for(int i = 0; i < datas.length; i++){ this.datas[i] = datas[i].clone(); } } |