phpsafe 𝕏 GitHub
공식 CA 421DTkQ3TSG3n7F9SkNZj9NxvdFGbypwkctPd2uupump 이 주소만 공식 주소입니다.

사용자 입력으로 파일 접근

위험도: 높음 CWE-22 OWASP A01:2021 Broken Access Control rule: path

왜 위험한가요

../ 같은 경로를 넣으면 의도한 폴더를 벗어나 설정 파일, 키, 소스 코드를 읽을 수 있습니다.

✕ 취약한 코드
readfile('/var/files/' . $_GET['file']);
✓ 안전한 코드
$base = realpath('/var/files');
$path = realpath($base . '/' . basename($_GET['file'] ?? ''));
if ($path === false || !str_starts_with($path, $base . '/')) {
    http_response_code(404);
    exit;
}
readfile($path);

해결 방법

basename()과 고정 폴더를 쓰고, realpath()로 그 폴더 안에 있는지 확인하세요.

내 코드 검사하기

파일을 붙여넣으면 이 규칙에 걸리는 줄을 모두 찾아드립니다.

내 코드 검사하기 →