PHP 웹사이트에서 이미지 업로드 기능이 있는데, 해커가 PHP 파일을 업로드하면 어떻게 되나요?
파일 업로드 취약점은 웹쉘 업로드로 이어져 서버 전체 장악이 가능합니다.
우회 기법:
안전한 방어:
// 1. 확장자 화이트리스트$allowed = ['jpg', 'jpeg', 'png', 'gif'];$ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));if (!in_array($ext, $allowed)) die("차단");// 2. 파일 내용 검증 (매직 바이트)$finfo = finfo_open(FILEINFO_MIME_TYPE);$mime = finfo_file($finfo, $tmpPath);if (!str_starts_with($mime, "image/")) die("차단");// 3. 파일명 랜덤 변경$newName = bin2hex(random_bytes(16)) . "." . $ext;// 4. 업로드 디렉토리 실행 권한 제거// .htaccess: php_flag engine off
댓글 1
파일 업로드 취약점은 웹쉘 업로드로 이어져 서버 전체 장악이 가능합니다.
우회 기법:
안전한 방어: