Stored XSS와 Reflected XSS 공격의 차이점을 설명하고, 각각의 공격 유형을 효과적으로 방어하기 위한 개발자의 구체적인 구현 방안을 제시해주세요.
힌트 · Stored XSS는 데이터베이스에 악성 스크립트가 저장되는 반면, Reflected XSS는 URL 파라미터를 통해 반사됩니다. 방어를 위해 입력값 검증, 출력 인코딩, Content Security Policy(CSP) 적용이 필수적입니다.
모범답안
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 / 취약점 면접 질문
- 보안 설정 오류 (Security Misconfiguration) 취약점이 발생하는 일반적인 시나리오와 이를 예방하기 위한 방법은 무엇인가요?
- SQL Injection 공격을 방어하기 위한 Prepared Statement 사용 외에, 개발자가 고려해야 할 추가적인 방어 전략은 무엇이 있으며, 각 전략이 어떤 원리로 동작하는지 설명해주세요.
- 안전한 인증 시스템을 설계할 때, 세션 관리 측면에서 고려해야 할 주요 보안 요소들은 무엇이며, 이를 OWASP 관점에서 어떻게 설명할 수 있을까요?
- 애플리케이션 개발 초기 단계에서부터 'Insecure Design' 취약점을 예방하기 위해 설계 과정에 어떤 보안 원칙들을 적용해야 할까요? 구체적인 예를 들어 설명해주세요.
- 사용자 개인 정보와 같은 민감 데이터를 안전하게 처리하기 위한 개발자의 역할은 무엇이며, 데이터 저장 및 전송 시 발생할 수 있는 'Sensitive Data Exposure' 취약점을 어떻게 방어할 수 있을까요?
- 애플리케이션에서 사용자별 권한을 효과적으로 관리하고 'Broken Access Control' 취약점을 방지하기 위한 접근 제어 모델 및 구현 시 고려사항을 설명해주세요.