XSS(Cross-Site Scripting) 공격이란 무엇이며, 어떻게 방어할 수 있나요?
힌트 · Stored XSS, Reflected XSS, DOM-based XSS의 차이와 CSP, 입력값 이스케이프 처리를 설명해보세요.
XSS는 CrossSite Scripting의 약자로, 공격자가 웹 사이트에 악성 스크립트를 삽입하여 사용자의 브라우저에서 실행되도록 하는 공격입니다. 이를 통해 쿠키 탈취, 세션 하이재킹, 사용자 정보 탈취 등 다…
전체 모범답안 펼치기 접기
XSS는 Cross-Site Scripting의 약자로, 공격자가 웹 사이트에 악성 스크립트를 삽입하여 사용자의 브라우저에서 실행되도록 하는 공격입니다. 이를 통해 쿠키 탈취, 세션 하이재킹, 사용자 정보 탈취 등 다양한 악성 행위를 할 수 있습니다.
XSS는 크게 Stored XSS, Reflected XSS, DOM-based XSS 세 가지 유형으로 나눌 수 있습니다. Stored XSS는 악성 스크립트가 서버에 저장되어 지속적으로 사용자에게 영향을 주는 반면, Reflected XSS는 사용자의 요청에 악성 스크립트가 포함되어 즉시 실행됩니다. DOM-based XSS는 서버를 거치지 않고 클라이언트 측에서 발생하는 공격입니다.
XSS를 방어하기 위해서는 다음과 같은 방법들을 사용할 수 있습니다. 첫째, 사용자로부터 입력받는 모든 값에 대해 유효성 검사를 철저히 수행하고, 위험한 문자들을 제거하거나 이스케이프 처리해야 합니다. 둘째, 웹 페이지에 출력되는 모든 데이터에 대해 HTML 엔티티 인코딩과 같은 적절한 인코딩을 적용하여 스크립트가 실행되지 않도록 해야 합니다. 셋째, Content Security Policy (CSP)를 설정하여 허용된 출처의 스크립트만 실행되도록 제한할 수 있습니다. CSP는 브라우저에게 어떤 리소스를 로드할 수 있는지 알려주는 역할을 합니다.