웹 보안 이론 2
XSS (Cross-Site Scripting)
개념
- 웹 사이트에 악성 스크립트를 삽입하여 사용자의 브라우저에서 실행되도록 하는 공격 기법.
- 공격자는 사용자의 쿠키, 세션정보 등을 탈취하거나 악성 코드를 실행하여 시스템을 장악.
세션
- 사용자가 웹사이트에 접속하여 활동하는 기간.
- 세션동안 사용자의 정보는 서버에 임시로 저장.
- 세션 ID: 고유한 식별자로, 주로 쿠키에 저장되어 사용자를 식별하고 인증상태를 유지.
쿠키
- 웹사이트가 사용자의 컴퓨터에 저장하는 작은 데이터 조각.
- 사용자 이름, 비밀번호, 방문 기록, 설정 등 정보를 저장하여 웹사이트 이용을 편리하게 함.
종류
1. 반사형 XSS
- 악성 스크립트가 포함된 URL을 클릭하도록 유도하여 사용자의 브라우저에서 즉시 실행되는 유형.
- 주로 검색 결과 페이지, 오류 메시지 등에 사용.
2. 저장형 XSS
- 악성 스크립트가 웹 서버에 저장되어, 해당 페이지에 접속하는 모든 사용자에게 영향을 미침.
- 게시판, 댓글, 방명록 등에 사용.
위험성
- 개인정보 탈취
- 쿠키, 세션정보 등을 탈취하여 사용자 계정을 도용하거나 개인 정보를 유출
- 악성코드 실행
- 사용자의 시스템에 악성 코드를 설치하여 시스템을 장악하거나 다른 공격 수행
- 웹 사이트 변조
- 웹 사이트 내용을 변조하여 사용자를 속이거나 악성 웹 사이트로 리다이렉션
- 피싱 공격
- 사용자를 속여 개인 정보를 입력하도록 유도
방어 기법
- 입력 값 검증
- 모든 사용자 입력 값에 대해 유효성 검사를 수행
- 특수 문자를 필터링하거나 이스케이프 처리
- 출력 값 인코딩
- 웹 페이지에 출력되는 모든 데이터에 대해 HTML 엔티티 인코딩 또는 자바스크립트 인코딩을 적용
- HTTPOnly 쿠키 사용
- 쿠키에
HTTPOnly
속성을 설정하여 자바스크립트를 통해 쿠키 접근을 차단
- 쿠키에
- 웹 애플리케이션 방화벽(WAF)
- WAF를 사용하여 XSS 공격을 탐지하고 차단