이 외에 Authentication (인증) 과 Accountability (책임추적성)이 추가되기도 함
웹사이트를 구성하는 HTML파일을 전송하기 위해 이요하는 프로토콜
HTTP 리퀘스트(요청)와 HTTP 리스폰스(응답)을 주고받으면서 이루어짐
통신 프로토콜 : 서로 통신할 때의 규약
- HTTP 리퀘스트의 구성
① 리퀘스트 라인 : 리퀘스트의 첫 번째 줄
- 메소드 : 서버에 대한 요청을 나타냄
GET : URI로 지정한 데이터를 가져옴
POST : 서버에 데이터 보냄
-URI : 메소드의 대상
- 버전 : 클라이언트가 사용하는 HTTP 프로토콜의 버전
② 메시지 헤더 : 요청 라인에 이어지는 여러 줄의 텍스트
+공백라인
③ 엔티티 바디 : POST 메소드로 웹브라우저에서 데이터를 보낼 때 사용
- HTTP 리스폰스의 구성
① 리스폰스 라인
-버전 : HTTP의 버전
-상태코드 : 요청에 대한 처리결과를 세 자릿수 숫자로 나타냄
-처리 사유 : 상태 코드의 의미를 보여주는 텍스트
② 메시지 헤더
+공백라인
③ 엔티티 바디
쿠키는 클라이언트의 브라우저에 저장, 요청에 포함됨
-> 악의적 클라이언트에 의해 변조 가능
-> 검증 없이 쿠키를 통해 인증 정보를 식별하는 서버에서는 공격자가 타 이용자를 사칭, 정보 탈취가 가능
- 쿠키와의 차이점
⊳ 쿠키와 달리 세션은 데이터를 서버가 저장
⊳ 쿠키가 데이터를 통째로 보내는 거라면, 세션은 데이터 대신 키를 보내고 서버가 그 키를 통해 저장된 데이터를 확인
⊳ 쿠키는 브라우저에서 만료 시간 관리 가능 / 타 이용자의 쿠키를 훔쳐 인증 정보를 획득하는 세션 하이재킹 위험
이용자를 대상으로 하는 공격
클라이언트 사이드 취약점을 통해 세션 및 쿠키 정보를 탈취하고 해당 계정으로 임의의 기능 수행 가능
다른 사용자의 웹 브라우저 내에서 적절한 검증 없이 실행되어 발생하는 보안 취향점
저장형(Stored) XSS
- 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS
- 웹 앱에서 찾아내기 어렵고 한 번의 공격으로 여러 사용자 무력화 가능
=> 큰피해
- 공격자가 악성 스크립트 코드를 응용 프로그램에 주입 -> 사용자가 게시물을 클릭 -> 악성 스크립트 실행
(ex. 게시판 사이트의 게시물과 댓글에 악성 스크립트를 포함해 업로드)
반사형(Reflected) XSS
- 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSS
- 단지 한 번의 요청 동안만 유효 => 비교적 피해 적음
- 공격자가 스크립트 코드가 포함된 URL을 메일에 전송하거나 게시물로 등록 -> 사용자가 URL을 클릭 -> 악성 스크립트 코드 실행
(ex. 검색 기능이 있는 게시판에서 검색 문자열에 악성 스크립트를 포함)
DOM Based XSS
- DOM(Document Object Model) : 문서 객체 모델, HTML문서에 접근하기 위해 일종의 인터페이스 -> 브라우저가 이해할 수 있는 구조로 구성해 메모리에 적재한 것으로 자바스크립트를 통해 작업 가능
- 공격자가 웹 페이지 URL에 존재하는 fragment에 악의적인 스크립트 코드를 입력 -> 사용자가 해당 URL에 접속 -> 스크립트 코드 실행
fragment : URL의 query 뒤에 붙으며 #으로 시작
- 사용자의 브라우저에서 DOM 객체에 접근해 새로운 요소를 수정하는 생성/수정하는 과정에서 실행됨
||> 반사형 XSS는 악성 스크립트가 서버에 전달되어야 하는 데에 비해, fragment는 서버 요청/응답에 포함되지 않기 때문에, 서버로 요청을 보내지 않고 악성 스크립트를 심을 수 있음 => 더 위험
사용자가 악의적 페이지 접속 -> 페이지에서 JS를 이용, 이용자의 SNS 웹 서비스로 요청 -> 브라우저에서 요청을 보낼 때 헤더에 해당 웹 서비스 쿠키 포함 -> 페이지는 로그인 된 이용자의 SNS 응답을 수신
=> 이와같은 문제를 방지하기 위해 나온 정책