Path Manipulation - Fortify

2017. 8. 22. 16:49[개발] 지식/Web 개발

File downloadFile = new File(path);

path가 "C:/test/test/test.png" 같은 패턴으로 들어오고 있었다.
client가 url의 파라미터로 넣어주고 있었기 때문에 서버 내부의 디렉토리에 접근할 수 있는 가능성이 있어,
Path Manipulation 에 걸렸다..

아래와 같은 방법으로 path를 validation한다.

public static String cleanString(String aString) {

        if (aString == null){
        	return null;
        }

        String cleanString = "";

        for (int i = 0; i < aString.length(); ++i) {

            cleanString += cleanChar(aString.charAt(i));

        }

        return cleanString;

    }

 

    private static char cleanChar(char aChar) {

       // 0 - 9
       for (int i = 48; i < 58; ++i) {
              if (aChar == i){
            	  return (char) i;
              }
       }

       // 'A' - 'Z'

       for (int i = 65; i < 91; ++i) {
              if (aChar == i){
            	  return (char) i;
              }
       }

       // 'a' - 'z'

       for (int i = 97; i < 123; ++i) {
              if (aChar == i){
            	  return (char) i;
              }
       }
      

       // other valid characters
       return getSpecialLetter(aChar);

    }
    
    public static char getSpecialLetter(char aChar){
    	
    	switch (aChar) {

	        case '/':
	            return '/';
	        case '.':
	            return '.';
	        case '-':
	            return '-';
	        case '_':
	            return '_';
	        case ' ':
	            return ' ';
	        case ':':
	            return ':';
	        case '&':
	            return '&';
	        default:
	        	return '%';

    	}
    	
    }


'[개발] 지식 > Web 개발' 카테고리의 다른 글

[JSTL] 시작하기  (0) 2017.11.08
Error Page 를 TilesView로 레이아웃 적용시키기  (0) 2016.06.15
<