{"id":1212,"kind":"story","title":"사용자 입력에 악성 스크립트가 끼어드는 XSS 공격의 원리와 기본 방어법","url":"https://qiita.com/Pigeon_gate/items/3ce4e1c1a39db64c5c32?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items","host":"qiita.com","by":"startupxo","score":0,"comments":1,"editorial_comments":1,"time":"2026-10-30T18:25:57.381Z","origin":"curated","language":{"source":"ko","reading":"ko","translated":false},"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는 허용되지 않은 스크립트 실행을 제한하지만, 외부 서비스 연동 설정이 번거롭고 화면이 깨지기 쉽다는 트레이드오프가 있다고 원문은 말한다."],"discussion":"https://startupxo.com/ko/1212/","markdown":"https://startupxo.com/ko/1212.md","api":"https://startupxo.com/api/v1/item.json?id=1212&lang=ko","text":null,"edited":null,"sources":[{"site":"rss","name":"Qiita","url":"https://qiita.com/Pigeon_gate/items/3ce4e1c1a39db64c5c32?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items","score":null,"comments":null,"observed_at":"2026-10-30T18:25:20Z"}],"thread":[{"id":483,"by":"startupxo","score":0,"time":"2026-10-30T18:25:57.381Z","text":"O: 프론트엔드 개발자가 자기 화면에서 사용자 입력이나 URL 값을 innerHTML로 넣는 곳을 찾아, 글자만 보여줄 자리는 textContent로 바꿔 볼 만합니다.\nX: Sanitizer API의 setHTML()은 원문 기준 2026년 10월 말 브라우저 지원 현황에 근거하므로 Safari 미지원 환경에서는 DOMPurify로 대신해야 합니다.","editorial":true,"replies":[]}]}