발생원인
입력값이 시스템의 명령어로 이용되는 환경에서 입력값 검증을 하지 않은 경우에 발생
영향
시스템 명령어 수행으로 인한 시스템 점령및 파괴
코드예
안전하기 않은 코드의 예 - JAVA |
…… props.load(in); String version = props.getProperty("dir_type"); String cmd = new String("cmd.exe /K \"rmanDB.bat \""); Runtime.getRuntime().exec(cmd + " c:\\prog_cmd\\" + version); ……
|
dir_type값에 대한 검증을 수행하지 않음 |
안전한 코드의 예 - JAVA |
……
props.load(in); String version[] = {"1.0", "1.1"}; int versionSelection = Integer.parseInt( props.getProperty("version")); String cmd = new String("cmd.exe /K \"rmanDB.bat \""); String vs = ""; if (versionSelection == 0) vs = version[0]; else if (versionSelection == 1) vs = version[1]; else vs = version[1]; Runtime.getRuntime().exec(cmd + " c:\\prog_cmd\\" + vs); …… |
입력값을 선택할 수 있게 수정 |
'보안 > 시큐어코딩' 카테고리의 다른 글
[시큐어코딩-6] 입력데이터 검증및 표현(6) 신뢰되지않은 URL주소로 자동접속연결 (0) | 2012.10.28 |
---|---|
[시큐어코딩-5] 입력데이터 검증및 표현(5) 위험한 형식 파일 업로드 (0) | 2012.10.28 |
[시큐어코딩-3] 입력데이터 검증및 표현(3) 크로스사이트 스크립트 (0) | 2012.10.28 |
[시큐어코딩-2] 입력데이터 검증및 표현(2) 자원삽입 (0) | 2012.10.28 |
[시큐어코딩-1] 입력데이터 검증및 표현(1) SQL삽입 (0) | 2012.10.28 |