[시큐어 코딩] #2 자원 삽입 :: 잡다한 프로그래밍
반응형

1. 자원삽입이란?

외부 입력값을 검증하지 않고 시스템 자원에 대한 식별자로 사용하는 경우, 입력값 조작을 통해 시스템이 보호하는 자원에 임의로 접근하거나 수정할 수 있는 보안적 이슈

 

2. 안전한 코딩기법

외부의 입력 자원을 식별자로 사용할 경우, 적절한 필터링 및 검증을 거치거나, 사전에 정의한 리스트에서 선택하도록 만든다.

 

3. 예시

사용자가 입력 소켓 번호로 -2920값을 입력할 경우 80이 되어 포트 충돌이 일어나는 상황

...

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);

 

다음과 같이 미리 리스트를 정해주고 사용자는 입력값을 번호로 하여 내부적으로 할당하도록 처리한다.

..

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;
    default:
    	port = 3000;
}

serverSocket = new ServerSocket(port);
반응형

+ Recent posts