HTTP 프로토콜의 특징
Connectionless ( 비연결 지향)
● 클라이언트와 서버가 한번 연결을 맺고, 클라이언트의 요청(Request) 에 대해 서버가 응답(Response)을 마치면 맺었던 연결은 끊어버림
● 장점 : 서버 자원의 절약으로 더 많은 연결이 가능
→ HTTP는 불특정 다수의 통신 환경을 기반으로 설계되어 있는데, 다수의 클라이언트와 계속 연결은 유지한다면 많은 리소스가 필요하다.
→ 연결유지를 위한 리소스 절약이 가능
● 단점 : 연결과 해제에 따른 오버헤드
→ 서버는 연결했던 클라이언트를 기억하지 않으므로 동일 클라이언트의 요청에도 매번 새로운 연결/해제 과정을 거치게 된다.
● HTTP 1.1 버전에서 연결을 계속 유지하고, 요청에 재활용 하는 기능이 Default 로 추가되었다.
(HTTP header에 keep-alive 옵션을 줄 수 있음)
Stateless ( 상태없음)
● 연결을 끊는 순간 클라이언트-서버간의 통신이 끝나고, 상태정보를 저장하지 않음
● 장점 : 서버의 확정성이 높기 때문에 대량의 트래픽 발생 시에도 대처를 수월하게 할 수 있다.
● 단점 : 매번 새로운 인증을 통해 클라이언트를 식별해야한다.
쿠키와 세션이 필요한 이유
● 웹에서는 웹 브라우저(클라이언트)와 웹 서버간에 데이터를 주고 받기 위해서 HTTP 프로토콜을 사용한다.
● 쿠키와 세션이 필요한 이유는 이 HTTP 프로토콜의 특징(Connectionless, Stateles)이자 약점을 보안하기 위함이다.
쿠키 (Cookie)
● 웹 사이트에 접속할 떄 생성되는 정보를 담은 임시파일이다.
● HTTP에서 클라이언트의 상태 정보를 클라이언트의 웹 브라우저에에 저장하고, 필요시 해당정보를 보내서 정보를 참조하거나 재사용할 수 있다.
특징
● Key-Value로 구성된 String
● 이름,값, 만료일(저장 기간 설정), 경로정보로 구성되어있다.
● 하나의 도메인당 20개의 쿠키를 가질 수 있다.
● 하나의 쿠키는 4KB(=4096byte)까지 저장 가능하다.
동작 순서
1. 사용자가 서버에 연결 요청을 보냄
2. 서버는 이때 쿠키(Cookie)를 생성
3. 그리고 쿠키와 함께 연결 응답 정보를 전송
4. 사용자는 다음에 연결을 수행할 때 쿠키와 함께 데이터를 요청
5. 서버는 이때 쿠리를 확인하고 사용자가 누구인지 확인후 그에 따른 응답을 하게됨
사용 예시
1. 방문했던 사이트에 다시 방문하였을 때 아이디와 비밀번호 자동 입력
2. "오늘 더이상 이창을 보지않음" 기능
3. 쇼핑몰의 장바구니 기능
취약점
- 사용자가 악의적인 목적으로 쿠키값을 변조한다면 다른 사용자로 둔갑하여 정보를 요청할수 있다. 때문에 쿠키값을 통해 민감한 정보나 사용자 구별 정보를 삽입해두면, 보다 쉽게 공격이 가능해진다.
- 즉 연결 지속성을 가지고 있는 정보를 사용자의 쿠키 값에 오롯이 의지하여 통신을 수행할 경우, 공격에 숩게 노출될 가능성이 매우 높다
세션 (Session)
● 일정 시간(웹서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점)동안 같은 사용자(브라우저) 로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그상태를 일정하게 유지 시키는 기술
● 쿠키 기반이지만, 사용자의 정보 파일을 서버 메모리에 저장
특징
● 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장
● 브라우저를 닫거나, 서버에서 세션을 삭제했을때만 삭제가 되므로, 쿠키보다 비교적 보안이 좋음
● 저장 데이터에 제한이 없음(서버 용량에 따라 달라진다)
● 각 클라이언트 고유 Session ID를 부여함.
→Session ID로 클라이언트를 구분하여 각 클라이언트 요구에 맞는 서비스 제공
동작 순서
1. 사용자가 서버에 연결 요청을 보냄
2. 서버에 이때 세션 ID 가 생성 및 저장
3. 그리고 이러한 세션 정보를 쿠키에 입력하여, 함께 연결 응답 정보를 전송
4. 사용자는 다음에 연결을 수행할 때 쿠키와 함께 데이터를 요청
5. 서버는 이때 쿠키를 확인하고, 쿠키에 입력된 세션정보를 통해 사용자가 누구인지 확인후 응답
사용 예시
1. 웹 사이트의 로그인 정보 유지
취약점
- 세션 탈취는 사용자의 PC가 감염될 경우, 서버가 감염될 경우, 사용자의 정보를 서버의 취약점을 통해 가져올 수 있을경우 등이 있다. 활성화 되어있는 세션 정보를 탈취 후 해당 세션의 정보로 변조가 가능할 시, 정상 사용자로 둔갑할 수있다.
- 세션 정보는 XSS, CSRF, SSRF등의 공격으로 탈취가 가능하며, 이러한 정보를 이용하여 특정 개인의 정보를 조회 및 조작할 수 있게 된다.
'Web Hacking > Web' 카테고리의 다른 글
취약점 관리 할 때 알아두면 도움 되는 사이트 10 (0) | 2022.07.13 |
---|---|
XSS (Cross-Site-Scripting) (0) | 2022.07.07 |
BurpSuite 사용시 유용한 단축키 모음 (0) | 2022.07.07 |
동일 출처 정책 SOP(Same-Origin-Poliy) (0) | 2022.07.06 |
WEB (0) | 2022.07.04 |