발생원인
외부 입력값이 내부 자원에 대한 식별자가 되는 환경에서 입력값을 검증하지 않을 경우 발생한다.
영향
시스템 내부 자원 접근, 수정, 자원간의 충돌 발생
코드예
안전하기 않은 코드의 예 - JAVA |
…… public void f() 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); …… } ……
|
Service No에 대한 입력값의 검증이 없다. |
안전한 코드의 예 - JAVA |
……
public void f() throws IOException { ServerSocket serverSocket; Properties props = new Properties(); String fileName = "file_list"; FileInputStream in = new leInputStream(fileName); 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 = "8080"; int port = Integer.parseInt(service);
// 외부 입력에서 포트번호를 검사한 후 리스트에서 적합한 값을 할당한다. switch (port) { case 1: port = 3001; break; case 2: port = 3002; break; case 3: port = 3003; break; default: port = 3000; }
// 서버소켓에 검사완료된 포트를 할당한다. serverSocket = new ServerSocket(port); …… } …… |
입력값 검사후 적절한 값을 할당함 |
'보안 > 시큐어코딩' 카테고리의 다른 글
[시큐어코딩-6] 입력데이터 검증및 표현(6) 신뢰되지않은 URL주소로 자동접속연결 (0) | 2012.10.28 |
---|---|
[시큐어코딩-5] 입력데이터 검증및 표현(5) 위험한 형식 파일 업로드 (0) | 2012.10.28 |
[시큐어코딩-4] 입력데이터 검증및 표현(4) 운영체제 명령어 삽입 (0) | 2012.10.28 |
[시큐어코딩-3] 입력데이터 검증및 표현(3) 크로스사이트 스크립트 (0) | 2012.10.28 |
[시큐어코딩-1] 입력데이터 검증및 표현(1) SQL삽입 (0) | 2012.10.28 |