[FEATURE] 리다이렉트 체인 테스트 fixture 추가#19
Merged
Merged
Conversation
sunm2n
approved these changes
May 18, 2026
sunm2n
left a comment
Contributor
There was a problem hiding this comment.
수고하셨습니다!
테스트 페이지 코드에서 일부 로직 개선을 하면 좋을만한 것들이 한 두개 보이긴 했지만 테스트용 페이지라서 굳이 수정보다는 지금 이상태로 충분하다고 판단해서 코멘트는 따로 달지 않았습니다
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
요약
URL 검역 엔진의 리다이렉트 추적 로직을 검증하기 위한

redirect-chain테스트 fixture를 추가했습니다.주요 변경 사항:
test-sites/redirect-chainNext.js 테스트 사이트 추가302 Location응답 반환tests/corpus/urls.yaml에 redirect-chain 테스트 URL 기대 결과 추가테스트 경로별 목적
/redirect/1단일 리다이렉트 기본 케이스입니다.
/redirect/1 -> /final/safe엔진이
302 Location을 한 번 따라가고 최종 URL을/final/safe로 정상 갱신하는지 확인합니다./redirect/3다중 리다이렉트 체인 케이스입니다.
/redirect/3 -> /hop/1 -> /hop/2 -> /final/safe엔진이 첫 번째 리다이렉트에서 멈추지 않고 연속된 hop을 끝까지 추적하는지 확인합니다.
/redirect/external외부 도메인 이동 케이스입니다.
/redirect/external -> https://example.com/리다이렉트 중 출처가 바뀌는 상황을 감지하고
cross_origin계열 신호를 남길 수 있는지 확인합니다. 실제 악성 도메인이 아닌example.com만 사용합니다./redirect/unsafe-scheme비허용 scheme 차단 케이스입니다.
Location: javascript:alert(1)브라우저에서는 보안 정책상 화면 이동이 보이지 않을 수 있지만, 엔진은
Location헤더를 보고javascript:같은 비허용 scheme을 따라가지 않고 차단해야 합니다./redirect/max-hop최대 hop 제한 초과 케이스입니다.
/redirect/max-hop -> /hop/max/1 -> /hop/max/2 -> ...기본
unchain_max_hops = 5제한을 초과하도록 긴 체인을 구성했습니다. 엔진이 과도한 redirect 체인을 무한 추적하지 않고max_hops_reached신호를 남기는지 확인합니다./redirect/to-suspicious리다이렉트 후 의심 최종 페이지 도달 케이스입니다.
/redirect/to-suspicious -> /final/suspicious리다이렉트 자체는 정상적으로 끝나지만, 최종 목적지에 카드번호, CVC, 만료일, 카드 비밀번호 앞 2자리 입력 UI가 있는 상황을 테스트합니다. 입력 요소는
readOnly,name없음, 버튼 비활성화 상태라 실제 정보 수집이나 전송은 발생하지 않습니다./final/safe정상 최종 목적지 페이지입니다.
정상 redirect chain의 최종 URL로 사용합니다.
/final/suspicious의심 최종 목적지 페이지입니다.
콘텐츠 분석기가 금융 정보 입력 UI와 비밀번호 필드를 감지할 수 있는지 확인하기 위한 비활성 테스트 페이지입니다.
연관 이슈 및 Close 할 이슈
close #17
Pull Request 체크리스트
TODO