사용자 입력으로 파일 include
왜 위험한가요
요청 값으로 include 경로를 만들면 공격자가 시스템 파일, PHP가 숨겨진 업로드 이미지, 외부 코드를 불러올 수 있습니다. 서버 전체가 장악되는 가장 빠른 경로 중 하나입니다.
include $_GET['page'] . '.php';
$pages = ['home' => 'home.php', 'about' => 'about.php'];
$page = $pages[$_GET['page'] ?? 'home'] ?? 'home.php';
include __DIR__ . '/pages/' . $page;
해결 방법
허용된 페이지 이름만 고정 파일에 연결하는 화이트리스트 배열을 쓰세요. 요청 값으로 include 경로를 만들지 마세요.
내 코드 검사하기
내 코드 검사하기 →
파일을 붙여넣으면 이 규칙에 걸리는 줄을 모두 찾아드립니다.