서버 측 코드 인젝션 (PHP)
설명
대상 애플리케이션은 코드 인젝션에 취약하게 발견되었습니다. 악의적인 사용자는 서버에서 실행될 임의의 PHP 코드를 삽입할 수 있습니다. 이로 인해 저장된 비밀 정보에 액세스하거나 계정을 탈취하거나 OS 명령을 실행하여 시스템 전체를 손상시킬 수 있습니다.
조치
사용자 입력을 eval
과 같은 문자열 데이터를 코드로 평가하는 함수로 직접 전달하지 마십시오.
eval
에는 거의 이점이 없으며, 따라서 현재 논리를 안전한 구현으로 대체하는 것이 가장 좋은 권장 사항입니다.
사용자 입력으로 동적으로 논리를 평가하는 더 안전한 구현을 사용하는 것이 한 가지 대안입니다. 다른 대안은 array()
를 사용하여 예상되는 사용자 입력을 배열 키에 저장하고 해당 키를 사용하여 함수를 실행하는 것입니다.
$func_to_run = function()
{
print('hello world');
};
$function_map = array();
$function_map["fn"] = $func_to_run; // 여기에 추가적인 입력 처리를 위한 매핑을 저장합니다.
$input = "fn";
// "fn"을 키로 찾아봅니다.
if (array_key_exists($input, $function_map)) {
// "fn" 배열 해시 값에 저장된 $func_to_run을 실행합니다.
$func = $function_map[$input];
$func();
} else {
print('잘못된 입력');
}
세부 정보
ID | 집계 | CWE | 유형 | 위험 |
---|---|---|---|---|
94.1 | false | 94 | 활성 | 높음 |