제공 서비스
웹 보안 점검 · 무료 단건 외부 공격표면 관리 · 지속 자동 AI 취약점 진단 · 신규 모의해킹 · 침투 테스트
요금제 스토어 블로그 파트너 마이페이지 무료 보안 점검
웹 보안 2026.05.17 · 조회 831

Open Redirect: AI 코딩 SaaS가 피싱 사기에 이용되는 함정 [2026]

정상 도메인의 Open Redirect는 피싱 메일이 정상 SaaS URL을 거쳐 가짜 사이트로 향하게 만든다. 로그인·결제·OAuth 콜백·next 파라미터에서 가장 자주 발견된다. 화이트리스트 표준 코드와 4가지 우회 패턴을 정리했다.

S
보안 전문 기업 SENTRIX 레드팀
해킹대회 수상 · 보안 실무 10년 · 실전 진단 경험을 바탕으로 작성합니다.
{# 전환 데이터: '노출·유출·배포전' 불안형 글이 스캔 전환의 대부분. 그런 글엔 위험 프레임을 더 강하게, 개념·비교·가이드형 글엔 담백하게 문맥 분기(제목+태그 키워드로 판별). #}
읽기만 하지 말고 내 사이트 상태부터 확인해보세요. URL 하나로 30초 무료 점검.

Open Redirect는 SaaS가 사용자 입력 URL을 검증 없이 redirect Location 헤더에 그대로 사용하는 결함이다.
공격자는 정상 도메인(예: yoursaas.com)의 redirect URL을 자기 피싱 사이트로 가리키게 만들고, 그 링크를 메일에 넣어 보낸다. 사용자는 정상 도메인이라 신뢰하고 클릭한 후 가짜 로그인 페이지에 도달한다.
이 글은 4가지 우회 패턴, Django 표준 화이트리스트 코드, 30초 자가진단을 정리했다.

한눈에 보는 Open Redirect

Q. Open Redirect는 왜 위험한가요? A. 피싱 메일이 정상 도메인 URL을 거쳐 가짜 사이트로 도착합니다. 도메인 검증 + SPF/DMARC 통과 상태로 메일 필터를 우회하며, 사용자 신뢰가 깨집니다. Q. ?next= 같은 파라미터를 안 쓰면 되나요? A. OAuth 콜백, SSO redirect, 결제 완료 페이지 등에 사실상 필요합니다. 제거가 아닌 화이트리스트 검증이 표준입니다. Q. URL 검증을 어떻게 하나요? A. urlparse로 netloc을 추출하고 자기 도메인 화이트리스트와 비교합니다. 상대 경로(/dashboard)만 허용하는 게 가장 안전합니다. Q. //evil.com 같은 우회는 막을 수 있나요? A. //로 시작하는 프로토콜 상대 URL은 자기 도메인으로 보이지만 다른 호스트로 향합니다. urlparse 검증이 필수입니다.

4가지 자주 우회되는 패턴

#패턴예시
1startswith('/') 단순 검증//evil.com이 통과 (프로토콜 상대 URL)
2도메인 부분 일치 검색yoursaas.com.evil.com이 통과
3URL 디코딩 누락%2F%2Fevil.com이 디코드 후 //evil.com
4OAuth state 미검증redirect_uri 변경 + state 재사용으로 토큰 탈취

Django 표준 화이트리스트 구현

from urllib.parse import urlparse
from django.http import HttpResponseRedirect
from django.conf import settings

ALLOWED_HOSTS_REDIRECT = {'yoursaas.com', 'www.yoursaas.com'}

def safe_redirect(request, default='/'):
    next_url = request.GET.get('next', '') or request.POST.get('next', '')
    if not next_url:
        return HttpResponseRedirect(default)

    parsed = urlparse(next_url)

    # 1. 상대 경로만 허용 (가장 안전)
    if not parsed.netloc and not parsed.scheme:
        # //evil.com 같은 프로토콜 상대 URL 차단
        if next_url.startswith('//'):
            return HttpResponseRedirect(default)
        return HttpResponseRedirect(next_url)

    # 2. 절대 URL은 화이트리스트 호스트만
    if parsed.netloc in ALLOWED_HOSTS_REDIRECT and parsed.scheme in {'http', 'https'}:
        return HttpResponseRedirect(next_url)

    return HttpResponseRedirect(default)

핵심 4요소: (1) urlparse 사용 (2) // 프로토콜 상대 차단 (3) 화이트리스트 완전 일치 (4) scheme http(s) 한정.
javascript: 스킴은 XSS 진입점이 되므로 반드시 차단해야 한다.
Django 기본 django.utils.http.url_has_allowed_host_and_scheme 사용이 가장 깔끔하다.

지금 1분만, CodeScan 무료 스캔으로 자기 도메인의 ?next= ?return_to= 파라미터 노출 패턴을 자동 점검합니다.

30초 자가진단

# 1. ?next= 우회 시도 — //evil.com
curl -sI "https://yourdomain.com/login?next=//evil.com" | grep -i location

# 2. URL 인코딩 우회 — %2F%2Fevil.com
curl -sI "https://yourdomain.com/login?next=%2F%2Fevil.com" | grep -i location

# 3. javascript: 스킴
curl -sI "https://yourdomain.com/login?next=javascript:alert(1)" | grep -i location

Location 헤더에 evil.com 또는 javascript:가 들어가면 Open Redirect 결함이다. CWE-601: URL Redirection to Untrusted Site 참조.

24시간 패치 절차

순위조치
1모든 redirect 함수에 url_has_allowed_host_and_scheme 적용
2OAuth redirect_uri 사전 등록 + state 파라미터 검증
3로그인·결제 완료·SSO 콜백 next 파라미터 화이트리스트화
4access log에 redirect Location 모니터링 알람

지금 해야 할 것

실무자: CodeScan 무료 스캔으로 30초 점검.
CISO·임원: 피싱 시뮬레이션 포함 점검은 SENTRIX 30분 1:1 상담.
정상 도메인 신뢰가 깨지면 브랜드 피해는 회복이 어렵다.

관련 글

{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[ {"@type":"Question","name":"Open Redirect는 왜 위험한가요?","acceptedAnswer":{"@type":"Answer","text":"피싱 메일이 정상 도메인 URL을 거쳐 가짜 사이트로 도착합니다. 도메인 검증과 SPF/DMARC 통과 상태로 메일 필터를 우회하며, 사용자 신뢰가 깨집니다."}}, {"@type":"Question","name":"?next= 같은 파라미터를 안 쓰면 되나요?","acceptedAnswer":{"@type":"Answer","text":"OAuth 콜백, SSO redirect, 결제 완료 페이지 등에 사실상 필요합니다. 제거가 아닌 화이트리스트 검증이 표준입니다."}}, {"@type":"Question","name":"//evil.com 같은 우회는 막을 수 있나요?","acceptedAnswer":{"@type":"Answer","text":"//로 시작하는 프로토콜 상대 URL은 자기 도메인으로 보이지만 다른 호스트로 향합니다. urlparse 검증이 필수입니다."}} ]}
Open Redirect 피싱 방어 리다이렉트 검증 OAuth 콜백 OWASP URL 화이트리스트

내 사이트도 점검해보세요

URL 하나면 21개 항목을 30초에 무료 점검합니다. 회원가입·카드 없이.

추천 상품
웹서비스 런칭 전 보안 세팅
런칭 전에 반드시 해야 하는 보안 설정을 원격으로 직접 해드립니다. HTTPS, 환경변수 분리, 보안 헤더…
220,000원 150,000원

AI 코딩 보안 체크리스트 받기

AI 코딩 보안 체크리스트(PDF)를 무료로 받아보세요.