발생원인
외부의 입력이 시스템에서 경로 등으로 활용되는 환경에서 입력값 검증이 없는 경우 발생
영향
임의의 파일 생성, 주요 파일 노출, 파일 삭제
코드예
안전하기 않은 코드의 예 - JAVA |
…… public void f(Properties request) { …… String name = request.getProperty("filename"); if( name != null ) { File file = new File("/usr/local/tmp/" + name); file.delete(); } …… } |
name에 대한 검증없이 사용 |
안전한 코드의 예 - JAVA |
…… public void f(Properties request) { …… String name = request.getProperty("user"); if ( name != null && !"".equals(name) ) { name = name.replaceAll("/", ""); name = name.replaceAll("\\", ""); name = name.replaceAll(".", ""); name = name.replaceAll("&", ""); name = name + "-report"; File file = new File("/usr/local/tmp/" + name); if (file != null) file.delete(); } …… } |
name에대해 위험한 문자 치환 추가 |
'보안 > 시큐어코딩' 카테고리의 다른 글
[시큐어코딩-13] 입력데이터 검증및 표현(13) 정수오버플로우 (0) | 2012.10.28 |
---|---|
[시큐어코딩-12] 입력데이터 검증및 표현(12) HTTP응답 분할 (0) | 2012.10.28 |
[시큐어코딩-10] 입력데이터 검증및 표현(10) 크로스사이트 요청위조 (0) | 2012.10.28 |
[시큐어코딩-9] 입력데이터 검증및 표현(9) LDAP삽입 (0) | 2012.10.28 |
[시큐어코딩-8] 입력데이터 검증및 표현(8) XPath삽입 (0) | 2012.10.28 |