Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Applepay
- 토큰탈취
- 토큰털이
- 0원메가패스
- 컨택리스
- 내방문자찾아주오
- ChatGPT
- 다음아고라사칭
- zelf
- 랜섬웨어
- 자바
- 2017티스토리결산
- 젤프
- 이클립스
- wannacry
- 윈도우11
- 예제
- perplexity
- 2017 티스토리 결산
- 페이스북
- 애플페이
- 방문자추적기
- 취약점
- 페이스북서명운동
- 메플리
- 다음아고라서명운동
- Ai
- 티스토리
- 베이직쎈
- 토스뱅크
Archives
- Today
- Total
EdgeSecu
URL Fragment란? (URL Fragment VS Query String) 본문

URL Fragment란?
URL Fragment는 URL에서 해시 기호(#) 뒤에 오는 부분을 말합니다. 이 부분은 웹 페이지 내의 특정 섹션이나 리소스를 식별하는 데 사용됩니다.
URL 구조에서의 위치
URI fragment - URIs | MDN
The fragment of a URI is the last part of the URI, starting with the # character. It is used to identify a specific part of the resource, such as a section of a document or a position in a video. The fragment is not sent to the server when the URI is reque
developer.mozilla.org
여기서 #SomewhereInTheDocument 부분이 바로 URL Fragment입니다.
핵심 특징: 서버로 전송되지 않음
URL Fragment의 가장 중요한 특징은 서버 요청/응답에 포함되지 않는다는 점입니다. 구체적으로:dev+1
- 서버로 전송되지 않음: 브라우저가 웹 서버에 리소스를 요청할 때, Fragment 부분은 서버로 전송되지 않습니다wikipedia
- 클라이언트에서만 처리: Fragment는 서버에서 리소스를 받은 후, 브라우저(클라이언트)에서만 처리됩니다developer.mozilla+1
- JavaScript로 접근 가능: Fragment는 클라이언트 측 JavaScript를 통해 접근하고 조작할 수 있습니다
Query String vs Fragment 비교
이해를 돕기 위해 Query String과 비교하면:dev
구분Query StringURL Fragment
| 위치 | ? 뒤에 위치 | # 뒤에 위치 |
| 서버 전송 | 전송됨 | 전송 안됨 |
| 처리 위치 | 서버에서 처리 | 클라이언트에서 처리 |
| 예시 | ?key=value | #section1 |
DOM-based XSS와의 연관성
질문에서 언급하신 DOM-based XSS에서 URL Fragment가 중요한 이유는:
- 서버 로그에 기록되지 않음: Fragment는 서버로 전송되지 않으므로 웹 서버 액세스 로그에 남지 않습니다stackoverflow
- 클라이언트 측 처리: JavaScript를 통해 Fragment 값을 읽고 DOM을 조작할 때, 적절한 검증 없이 사용하면 XSS 공격에 취약해집니다
- Referer 헤더에 포함되지 않음: Fragment는 다른 사이트로 이동할 때 Referer 헤더에도 포함되지 않습니다stackoverflow
일반적인 사용 예시
- 페이지 내 앵커: #section1 - 해당 ID를 가진 요소로 스크롤wikipedia+1
- SPA 라우팅: #/user/profile - 단일 페이지 애플리케이션에서 클라이언트 측 라우팅dev
- 미디어 타임스탬프: #t=10,20 - 비디오의 특정 시간대로 이동developer.mozilla
이러한 특성으로 인해 DOM-based XSS 공격에서는 악성 스크립트가 포함된 URL Fragment를 통해 클라이언트 측에서만 실행되는 공격이 가능하며, 서버 측 보안 검증을 우회할 수 있어 특별한 주의가 필요합니다.
- https://en.wikipedia.org/wiki/URI_fragment
- https://developer.mozilla.org/en-US/docs/Web/URI/Reference/Fragment
- https://dev.to/zahra_mirkazemi/query-strings-vs-hash-fragments-whats-the-real-difference-597n
- https://stackoverflow.com/questions/20757583/how-secure-is-it-to-use-fragment-identifiers-to-hold-private-data-in-urls
- https://stackoverflow.com/questions/30997420/what-are-fragment-urls-and-why-to-use-them
- https://velog.io/@king_nono_1030/HTTP-URI-Fragment
- https://developer.mozilla.org/en-US/docs/Web/URI/Reference/Fragment/Text_fragments
- https://portswigger.net/daily-swig/attackers-can-use-scroll-to-text-fragment-web-browser-feature-to-steal-data-research
- https://wicg.github.io/scroll-to-text-fragment/
- https://stackoverflow.com/questions/1956378/difference-between-a-querystring-and-a-fragment