프로필 닉네임 / 아이콘 렌더링 XSS
닉네임, 상태 메시지, 아이콘 URL 처럼 사소해 보이는 프로필 필드가 속성/HTML 컨텍스트에서 실행 가능한 코드가 되는지 확인한다.
HTML payload 테스트
이 시나리오는 iframe sandbox 가 아니라 사용자 입력이 HTML/DOM 으로 렌더링되는 지점을 검증합니다.
- 닉네임은 textContent 로만 렌더링되는지 확인
- 속성에 넣는 값은 attribute context 에 맞게 인코딩되는지 확인
- 아이콘 URL 은 URL 객체와 host/protocol allowlist 로 검증하는지 확인
페이로드
복사할 payload
닉네임이 title, aria-label, value 같은 속성에 들어갈 때 따옴표 탈출을 확인한다.
붙여넣을 곳
본인이 권한을 가진 dev/staging의 에디터, 댓글, 프로필 또는 HTML 렌더링 입력란
판정 기준
실행되면 위험 신호입니다. 코드가 텍스트로 표시되거나 위험 요소가 제거되어야 기대한 방어 결과입니다.
미리보기
미리보기는 학습용으로 의도적으로 unsafe 렌더링을 수행합니다. 실제 서비스에서는 이 payload 가 텍스트로 이스케이프되거나 제거되어야 합니다.
로그
// 로그 없음
해설
- 프로필 필드는 화면 곳곳에서 재사용됩니다. 댓글, 알림, 관리자 목록, 공유 카드처럼 렌더링 위치가 많아져서 하나의 누락이 저장형 XSS 로 이어질 수 있습니다.
- 닉네임은 HTML 이 아니라 텍스트입니다. React/DOM 의 기본 텍스트 렌더링을 유지하고, 별도 formatter 가
dangerouslySetInnerHTML을 쓰지 않는지 확인하세요. - 아이콘은 URL 검증이 핵심입니다. 사용자가 입력한 아이콘 URL 을 그대로
src, CSS URL, innerHTML 로 넘기지 말고, 프로토콜/호스트/콘텐츠 타입을 검증하세요.