개선 대상 및 현재 한계점
커뮤니티 게시글 미리보기(content_preview)가 저장된 HTML을 v-html로
그대로 렌더링해 저장형 XSS가 가능합니다. 글 생성 API가 본문을 정제 없이
저장하기 때문에, 스크립트를 심으면 목록을 보는 다른 사용자 브라우저에서
실행될 수 있습니다.
- 대상:
Community.vue(커뮤니티 목록), ProblemCommunity.vue(문제풀이 탭)
제안하는 개선 사항
미리보기를 순수 텍스트로 처리합니다.
- 백엔드:
content_preview를 strip_tags로 태그 제거 후 100자 반환
- 프론트:
v-html → 텍스트 보간({{ }})으로 변경
참고 자료
- 예시:
content에 <img src=x onerror=alert(1)>를 넣어 생성 시 미리보기에서 실행됨
- 상세 보기는 Tiptap이 위험 태그를 제거하므로 현재도 안전
Acceptance Criteria
개선 대상 및 현재 한계점
커뮤니티 게시글 미리보기(
content_preview)가 저장된 HTML을v-html로그대로 렌더링해 저장형 XSS가 가능합니다. 글 생성 API가 본문을 정제 없이
저장하기 때문에, 스크립트를 심으면 목록을 보는 다른 사용자 브라우저에서
실행될 수 있습니다.
Community.vue(커뮤니티 목록),ProblemCommunity.vue(문제풀이 탭)제안하는 개선 사항
미리보기를 순수 텍스트로 처리합니다.
content_preview를strip_tags로 태그 제거 후 100자 반환v-html→ 텍스트 보간({{ }})으로 변경참고 자료
content에<img src=x onerror=alert(1)>를 넣어 생성 시 미리보기에서 실행됨Acceptance Criteria