질문 162 · 실전 면접 답변
XSS와 CSRF의 공격 원리와 방어 방법은 어떻게 다른가요?
이렇게 답해 보세요 (핵심 답변)
XSS(교차 사이트 스크립팅)는 공격자가 심은 악성 스크립트가 피해자의 브라우저에서 우리 사이트의 신뢰된 문맥으로 실행되는 공격이고, CSRF(교차 사이트 요청 위조)는 이미 로그인된 사용자의 브라우저가 쿠키를 자동 전송하는 특성을 악용해 공격자 페이지에서 우리 서버로 원치 않는 상태 변경 요청을 보내게 만드는 공격입니다. 따라서 XSS를 막으려면 사용자 입력의 문맥별 이스케이프·살균(Sanitization), dangerouslySetInnerHTML/innerHTML 남용 금지, CSP(Content Security Policy) 설정으로 '스크립트 실행 자체'를 차단해야 합니다. 반면 CSRF를 막으려면 SameSite 쿠키 속성, CSRF 토큰 검증, Origin/Referer 헤더 검증, 안전한 HTTP 메서드(GET에 상태 변경 금지) 준수로 '요청의 정당한 출처와 의도'를 검증해야 합니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- XSS는 '신뢰된 출처 내부에서 악성 코드가 실행되는 문제'이고, CSRF는 '외부 출처에서 인증 쿠키가 실려 요청이 날아오는 문제'이므로 공격 성립 조건과 방어선이 다릅니다.
- 만약 사이트에 XSS 취약점이 열려 있으면 공격자 스크립트가 화면의 CSRF 토큰까지 읽어서 요청을 보낼 수 있으므로 두 방어는 반드시 함께 갖춰야 합니다.
면접에서 자주 하는 실수
HttpOnly 쿠키만 쓰면 XSS가 완전히 해결된다거나, 반대로 CORS 설정만 해 두면 모든 폼 전송 기반의 CSRF 요청까지 완벽히 차단된다고 오해하면 안 됩니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 162번을 바탕으로 질문과 답변을 새로 정리했습니다.