검증되지 않은 URL 리다이렉트

검증되지 않은 URL 리다이렉트

설명

사용자 입력을 Location 헤더로 사용하면 신뢰된 도메인을 악성 사이트 이동에 악용할 수 있습니다.

잠재적 영향

피싱에 악용될 수 있으며, 인증 흐름이 이 리다이렉트를 신뢰하면 OAuth 코드 탈취나 접근 제한 우회로 이어질 수 있습니다.

해결 방법

서버가 정한 내부 경로를 사용하거나, 외부 URL을 고정된 키와 허용 목록으로 선택하세요. //로 시작하는 외부 호스트 경로를 내부 경로로 취급하지 마세요.

예시

변경 전

php
<?php
header('Location: ' . $_GET['redirect']);

변경 후

php
<?php
$next = ($_GET['redirect'] ?? '') === 'profile' ? '/profile' : '/';
header('Location: ' . $next);

설명:

  • 변경 전: 사용자가 제어하는 데이터가 리다이렉트 대상으로 사용됩니다.
  • 변경 후: 서버가 정한 내부 경로를 사용하거나, 외부 URL을 고정된 키와 허용 목록으로 선택하세요. //로 시작하는 외부 호스트 경로를 내부 경로로 취급하지 마세요.

참조