개요
사용자가 삭제된 주제를 능동적으로 보고 있는 동안, 연속 스크롤(위 또는 아래)이 posts.json API 호출의 무한 루프를 트리거합니다. 이 호출들은 일관되게 403 Forbidden 오류를 반환하지만, 애플리케이션은 삭제를 인식하지 못하고 존재하지 않는 콘텐츠 로딩을 중단하지 않아 지속적인 백그라운드 네트워크 활동과 깨진 사용자 경험을 초래합니다.
재현 단계
- 준비 (관리자/모더레이터 사용자):
- 주제 삭제 권한이 있는 사용자(예: 관리자 또는 모더레이터)로 로그인합니다.
- 스크롤할 수 있는 콘텐츠가 있는지 확인하기 위해 몇 개의 게시물이 있는 새 주제를 생성합니다.
- 이 주제의 페이지 URL을 준비해 둡니다.
- 사용자 경험 (일반 사용자):
- 일반 사용자(삭제 권한 없음)로 로그인합니다.
- 새 브라우저 탭이나 창을 엽니다.
- 1단계에서 생성한 주제로 이동합니다.
- 브라우저의 개발자 도구를 열고 “Network” 탭으로 이동합니다. 깨끗한 뷰를 위해 기존 요청을 모두 지웁니다.
- 동시 삭제 및 상호작용:
- 일반 사용자가 주제 페이지에 있는 동안(2단계), 관리자/모더레이터 계정(1단계)을 사용하여 주제를 삭제합니다.
- 주제가 삭제된 직후, 일반 사용자는 이제 삭제된 주제 페이지에서 위 또는 아래로 스크롤을 시도합니다.
- 관찰:
- 일반 사용자의 브라우저 Network 탭에서
https://discourse-url/t/xxxxx/posts.json?(여기서xxxxx는 삭제된 주제 ID)로 계속되는 GET 요청이 전송되는 것을 관찰합니다. - 이 모든 요청이 일관되게
403 ForbiddenHTTP 상태 코드를 반환하는 것을 확인합니다. - 애플리케이션은 주제가 삭제되었다는 메시지를 표시하지도 않고, 이러한 실패한 스크롤 요청을 중단하지도 않습니다.
잠재적 결과
- 제 커뮤니티에서는 사이버 공격을 방지하기 위해 Cloudflare를 사용하는데, 이 버그로 인해 일부 사용자가 너무 많은 요청을 보내면서 레이트 리밋(rate-limit)을 당하는 일이 발생했습니다.