eval()로 코드 실행
왜 위험한가요
eval()은 받은 문자열을 PHP 코드로 그대로 실행합니다. 그 일부라도 요청에서 온 값이면 공격자가 서버에서 자기 코드를 실행할 수 있습니다.
$result = eval('return ' . $_POST['formula'] . ';');
// Allow only known operations
$ops = [
'add' => fn($a, $b) => $a + $b,
'sub' => fn($a, $b) => $a - $b,
];
$op = $ops[$_POST['op'] ?? ''] ?? null;
$result = $op ? $op((float)$_POST['a'], (float)$_POST['b']) : null;
해결 방법
문자열을 코드로 실행하지 마세요. 명시적인 로직, 매핑 표, 안전한 파서로 바꾸세요.
내 코드 검사하기
내 코드 검사하기 →
파일을 붙여넣으면 이 규칙에 걸리는 줄을 모두 찾아드립니다.