패스잇
보안 · 중급

Stored XSS와 Reflected XSS 공격의 차이점을 설명하고, 각각의 공격 유형을 효과적으로 방어하기 위한 개발자의 구체적인 구현 방안을 제시해주세요.

힌트 · Stored XSS는 데이터베이스에 악성 스크립트가 저장되는 반면, Reflected XSS는 URL 파라미터를 통해 반사됩니다. 방어를 위해 입력값 검증, 출력 인코딩, Content Security Policy(CSP) 적용이 필수적입니다.

지속성입력값 검증출력값 인코딩Content Security Policy (CSP)HTTPOnly 쿠키

모범답안

Stored XSS와 Reflected XSS는 XSS 공격의 두 가지 주요 유형입니다. Stored XSS는 악성 스크립트가 서버의 데이터베이스에 저장되어, 사용자가 해당 데이터를 요청할 때마다 실행되는 공격입니다. 게시판 댓글이나 사용자 프로필 정보 등이 공격 대상이 될 수 있습니다. 반면 Reflected XSS는 악성 스크립트가 URL 파라미터나 폼 입력 등을 통해 서버로 전달되고, 서버는 이를 그대로 사용자에게 반사하여 실행시키는 공격입니다. 검색 결과 페이지나 오류 메시지 등이 취약점이 될 수 있습니다.

Stored XSS 방어를 위해서는 입력값 검증을 철저히 해야 합니다. 서버 측에서 허용된 문자만 필터링하고, HTML 태그나 스크립트 관련 코드는 제거해야 합니다. Reflected XSS 방어를 위해서는 출력값 인코딩이 중요합니다. HTML 엔티티 인코딩을 사용하여 브라우저가 스크립트로 해석하지 않도록 해야 합니다.

두 가지 공격 모두에 효과적인 방어 방법은 Content Security Policy (CSP)를 적용하는 것입니다. CSP를 통해 허용된 출처의 스크립트만 실행하도록 제한할 수 있습니다. 또한, HTTPOnly 쿠키를 사용하여 XSS 공격으로 인한 쿠키 탈취를 방지할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 OWASP / 취약점 면접 질문

← OWASP / 취약점 면접 질문 전체 보기