<02. Resource Injection : 리소스 주입>
발생 원인 : 외부 입력값이 내부 자원에 대한 식별자가 되는 환경에서 입력값에 대한 검증이 없을 경우 발생
영향 : 시스템 내부 자원 접근, 수정, 자원 간의 충돌 발생
Bad Code : Servie No에 대한 입력값 검증이 없음
public void createSocket() throws IOException {
int def = 1000;
ServerSocket serverSocket;
Properties props = new Properties();
String fileName = "file_list";
FileInputStream in = new FileInputStream(fileName);
props.load(in);
//외부 입력 데이터
String service = props.getProperty("Service No");
int port = Integer.parseInt(service);
//외부 입력 데이터로 소켓 생성
if (port != 0) {
serverSocket = new ServerSocket(port + 3000);
}
else {
serverSocket = new ServerSocket(def + 3000);
}
......
}
Good Code : 외부 입력값에 대한 기본적인 검증 후, 적절한 값을 할당
public void createSocket() throws IOException {
int def = 1000;
ServerSocket serverSocket;
Properties props = new Properties();
String fileName = "file_list";
FileInputStream in = new FileInputStream(fileName);
//외부 입력 데이터
String service = "";
if (in != null && in.available() > 0) {
props.load(in);
service = props.getProperty("Service No");
}
//외부 입력 데이터 검증
if ("".equals(service)) {
service = "1";
}
int port = Integer.parseInt(service);
//외부 입력 데이터에 따른 포트번호 설정
switch(port) {
case 1: def + 1; break;
case 2: def + 2; break;
case 3: def + 3; break;
case 4: def + 4; break;
default: port = def;
}
//검증 완료된 포트로 소켓 생성
serverSocket = new ServerSocket(port);
......
}
댓글을 달아 주세요
댓글 RSS 주소 : http://www.yongbi.net/rss/comment/880