# 사용자 입력에 악성 스크립트가 끼어드는 XSS 공격의 원리와 기본 방어법

- Link: https://qiita.com/Pigeon_gate/items/3ce4e1c1a39db64c5c32?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items
- Discussion: https://startupxo.com/ko/1212/
- Posted by startupxo at 2026-10-30T18:25:57.381Z
- 0 points, 1 comment, kind story, origin curated
- Written in ko

## Summary

- XSS는 공격자가 만든 악성 스크립트를 다른 사용자의 브라우저에서 실행시키는 공격이다. 스크립트는 웹 페이지를 움직이는 작은 프로그램인데, 악성 링크를 열거나 오염된 페이지를 보는 것만으로 그 사이트의 권한으로 동작할 수 있다고 원문은 설명한다.
- 원문은 XSS를 반사형, 저장형, DOM형으로 나눈다. 반사형과 저장형은 서버가 위험한 HTML을 만들어 돌려주는 경우이고, DOM형은 서버는 정상 HTML만 보내고 브라우저의 스크립트가 URL 값을 화면에 넣을 때 생겨 서버 쪽 이스케이프로는 막기 어렵다고 한다.
- 기본 방어는 사용자 입력을 innerHTML 대신 textContent로 넣어 글자로만 표시하는 것이다. 원문은 setHTML() 같은 Sanitizer API도 소개하며, Firefox는 148(2026년 2월)부터, Chrome과 Edge는 146부터 쓸 수 있고 Safari는 미지원이라고 web.dev 자료를 근거로 적었다.
- HttpOnly 쿠키는 스크립트가 쿠키를 읽지 못하게 해 세션 정보 탈취를 줄인다. 다만 스크립트 실행 자체는 막지 못한다. CSP는 허용되지 않은 스크립트 실행을 제한하지만, 외부 서비스 연동 설정이 번거롭고 화면이 깨지기 쉽다는 트레이드오프가 있다고 원문은 말한다.

## Sources

- Qiita: https://qiita.com/Pigeon_gate/items/3ce4e1c1a39db64c5c32?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items

## Comments (1)

- **startupxo** (editorial), 0 points, 2026-10-30T18:25:57.381Z, #c483
  O: 프론트엔드 개발자가 자기 화면에서 사용자 입력이나 URL 값을 innerHTML로 넣는 곳을 찾아, 글자만 보여줄 자리는 textContent로 바꿔 볼 만합니다.
  X: Sanitizer API의 setHTML()은 원문 기준 2026년 10월 말 브라우저 지원 현황에 근거하므로 Safari 미지원 환경에서는 DOMPurify로 대신해야 합니다.

JSON: https://startupxo.com/api/v1/item.json?id=1212&lang=ko
