1. HTTP(Hypertext Transfer Protocol)
[+] 개요
- 월드 와이드 웹(World Wide Web)에서 정보를 주고받기 위해 사용되는 프로토콜 (클라이언트와 서버 간의)
- 클라이언트 측에서 요청을 보내고 서버는 응답을 하는 구조
[+] 동작 방식
1. 3-way을 통해 클라이언트 <==> 서버 간의 연결
2. 연결 후 클라이언트측에서 URL페이지(GET/POST) 요청
3. 페이지 전달이 성공하여 HTTP 200 코드(성공) 전달
4. 4-way를 통해 연결 종료
[+] 연결 프로토콜
- HTTP v1.0까지는 비연결형 구조로 클라이언트 요청에 대한 서버의 HTTP응답 이후 TCP 연결을 바로 종료되는 형태였으며, 제한된 서버(web) 연결 자원을 최대한 많은 클라이언트 요청을 처리하기 위해 사용되었지만, 서버 입장에서는 통신을 위한 다수의 TCP연결 설정 및 종료는 부하가 발생하여 지금 사용 중인 v1.1 버전에서는 헤더에 Keep-Alive옵션을 추가하여 일정시간 연결을 지속하는 방식으로 변경
- Keep-Alive옵션 (httpd.conf)
> keepAlive On / OFF로 설정
[+] 상태정보(쿠키/세션)를 유지하는 프로토콜
- 상태정보를 유지하는 것은 동일한 클라이언트에서 이전요청과 현재 요청을 식별하지 못하는 상태입니다. 하지만, 기존의 요청 정보를 필요로 하는 로그인 상태 유지(다른 페이지로 이동시) 또는 장바구니기능 등을 사용하기 위해서는 세션, 쿠키를 사용하여 상태를 유지
[+] 쿠키 방식
- 쿠키 방식은 서버 측에서 클라이언트 식별을 위한 쿠키 정보를 생성하고, 클라이언트 상태 정보를 HTTP요청/응답 헤더를 통해 전달
- 쿠키의 경우 영속 쿠키, 세션 쿠키가 있으며, 해킹 및 스니핑 공격에 의해 중요정보 위/변조, 외부노출 취약점이 있기 때문에 서버에 상태가 저장되는 세션 방식의 쿠키를 사용하는 것을 권고하며, 부득이하게 쿠키를 사용할 경우 암호화를 적용해야 합니다.
[+] 세션 방식
- 세션 방식은 클라이언트 측의 상태정보를 서버에 저장하는 기술
- 개별 클라이언트 세션을 식별하기 위해 세션 ID를 부여하고 ID를 통해 세션쿠키를 주고받으며 통신
- 서버 측에서 상태정보를 가지고 있지만, 세션 ID를 탈취당한다면 정상 사용자로 위장하여 접근할 수도 있다.(HTTP 세션 하이재킹)
[+] HTTP 쿠키 보안 설정
- httponly 속성 : set-cookie응답헤더에 설정하는 것으로 스크립트를 통해 쿠키에 접속 차단 (XSS 공격 대응방안)
- secure 속성 : HTTPS통신일 때 쿠키를 전송하고 HTTP일 때는 전송하지 않는 속성(평문 쿠키 노출 방지 = 기밀성 보장)
[+] 주요 요청 메서드
- GET, POST 이외의 불필요한 메서드를 허용할 경우 웹 서버의 파일 생성, 수정, 삭제 등 취약점이 발생할 수 있음.
메소드 | 설명 |
GET | 지정된 리소스의 데이터 요청 |
POST | 지정된 리소스에 데이터를 제출하여 처리하거나 업로드 |
PUT | 지정된 리소스를 업데이트하거나 새로운 리소스를 생성 |
DELETE | 지정된 리소스를 삭제 |
PATCH | 지정된 리소스의 일부를 업데이트 |
HEAD | GET 요청과 유사하지만, 응답 본문을 제외한 헤더 정보만 요청 |
OPTIONS | 서버가 지원하는 메소드 및 기능을 요청 |
[+] 쿼리 스트링(Query String 요청문자열)
- 구분형식
▷?: 쿼리 스트링 식별자
▷ param=value : 파라미터 / 값
▷ & : 파라미터 구분자
- GET 방식으로 쿼리 스트링을 전달할 경우 URL에 Data가 그대로 노출되기 때문에 중요정보(ID/PW) 같은 경우 POST방식으로 전달하는 것을 권고
[+] 주요 상태 코드
- 서버가 클라이언트에게 요청에 대한 응답으로 반환하는 코드
코드 | 설명 |
200 | OK - 요청이 성공적으로 처리되었고, 응답에 데이터가 포함됩니다. |
201 | Created - 새로운 리소스가 성공적으로 생성되었습니다. |
204 | No Content - 요청은 성공했지만, 응답에는 데이터가 없습니다. |
400 | Bad Request - 요청이 잘못되었거나 부적절합니다. |
401 | Unauthorized - 인증되지 않은 요청입니다. |
403 | Forbidden - 요청이 서버에 의해 거부되었습니다. |
404 | Not Found - 요청한 리소스를 찾을 수 없습니다. |
500 | Internal Server Error - 서버에서 오류가 발생했습니다. |
502 | Bad Gateway - 게이트웨이나 프록시 서버에서 오류가 발생했습니다. |
503 | Service Unavailable - 서버가 일시적으로 사용할 수 없습니다. |
'소소한 IT이야기 > 정보보안기사 실기' 카테고리의 다른 글
[정보보안기사] 침해사고 분석 및 대응 - Snort (feat. 실기 기출) (0) | 2023.07.12 |
---|---|
정보처리기사 실기 요약 - 1. 요구 사항 확인 (2) | 2022.10.03 |
정보처리기사 프로그래밍 언어 활용 (feat.버블 정렬, 기출문제) (3) | 2022.10.01 |