보안/시큐어코딩
[시큐어코딩-11] 입력데이터 검증및 표현(11) 디렉토리 경로조작
오픈이지
2012. 10. 28. 15:00
발생원인
외부의 입력이 시스템에서 경로 등으로 활용되는 환경에서 입력값 검증이 없는 경우 발생
영향
임의의 파일 생성, 주요 파일 노출, 파일 삭제
코드예
안전하기 않은 코드의 예 - 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에대해 위험한 문자 치환 추가 |