쉘 명령어 실행
왜 위험한가요
쉘에 전달된 입력값에 ; 나 | 같은 문자를 넣으면 다른 명령어를 덧붙일 수 있어, 공격자가 서버를 장악하게 됩니다. 값을 엄격하게 검증하고 모든 인자를 escapeshellarg()로 감싸세요.
system('ping -c 1 ' . $_GET['host']);
$host = $_GET['host'] ?? '';
if (!filter_var($host, FILTER_VALIDATE_IP)) {
exit('Invalid address');
}
system('ping -c 1 ' . escapeshellarg($host));
해결 방법
쉘 호출은 피하세요. 꼭 필요하면 인자마다 escapeshellarg()를 쓰고, 사용자 입력이 명령어 자체에 들어가지 않게 하세요.
내 코드 검사하기
내 코드 검사하기 →
파일을 붙여넣으면 이 규칙에 걸리는 줄을 모두 찾아드립니다.