티스토리 뷰

TIL

[Network] HTTP/HTTPS와 CORS

Redirect 2022. 7. 31. 21:57
728x90

HTTP와 HTTPS

HTTP는 서버와 클라이언트 간에 데이터를 주고 받는 프로토콜이며 거의 모든 형태의 데이터를 다룰 수 있습니다. 하지만 별다른 보안이 없기 때문에 네트워크 신호를 가로챈다면 내용이 외부에 노출될 가능성이 높습니다.

HTTPS는 대표적으로 기존의 HTTP을 SSL이라는 보안 계층에서 작동합니다. 이러한 방식을 SSL 암호화 통신이라고도 하며 SSL 암호화는 공개키 암호화 방식을 통해 이뤄집니다.

728x90

HTTP 요청/응답 헤더

요청 시에는 서버의 도메인인 Host, 사용하는 클라이언트의 종류인 User-Agent, 클라이언트가 허용할 수 있는 파일 형식인 Accept, Cookie 등 여러 헤더를 사용합니다.

응답 시에는 웹 서버의 정보를 나타내는 Server, CORS 에러를 방지하기 위해 프론트 주소를 적어두는 Acess-Contrl-Allow-Origin, 응답 본문을 어떻게 표시하는지 알려주는 Content-Disposition 등 여러 헤더를 사용합니다.

 

HTTP와 HTTPS 동작 과정

HTTP는 암호화가 되지 않은 평문 데이터를 전송합니다.

HTTPS는 클라이언트가 연결을 시도하면 서버는 인증서를 발급합니다. 브라우저는 이를 통해 세션키를 발급하고 암호화하여 서버로 전송합니다. 서버는 이를 복호화하여 세션키를 얻게 되고 클라이언트와 서버는 동일한 세션키를 보관함으로 보안이 설정되게 됩니다.

 

CORS란?

자신이 속한 도메인. 프로토콜, 포트가 아닌 다른 곳에서 요청이 들어왔다면 이는 보안 상의 이유로 Cross-Origin HTTP 요청을 보내게 됩니다.

요청 방법에는 3가지가 있는데 첫 번째는 단순 요청으로 GET, POST, HEAD 메서드만 가능합니다. 두 번째는 사전 요청으로 OPTIONS 메서드를 통해 다른 도메인 리소스에 요청이 가능한지 확인하는 작업입니다. 마지막은 인증 요청으로 쿠키나 토큰을 인증 관련 헤더에 담을 때 사용하는 요청으로 클라이언트에서는 credentials : include를 해야 요청이 가능합니다.

 

GET 메서드와 POST 메서드

GET 메서드는 서버로부터 데이터를 요청하여 READ하기 위해 사용하는 메서드이고 POST는 서버로부터 데이터를 입력하거나 업데이트 하기 위해 데이터를 보낼 때 사용합니다. 전송할 데이터의 타입은 Content-Type에 의해 결정되며 body에 담아 보낼 수 있습니다.

 

쿠키(Cookie)와 세션(Session)

쿠키는 클라이언트 측에 보관되는 키와 값이 들어있는 데이터 파일입니다. 이를 통해 사용자 인증이 유효한 시간을 확인할 수 있으며 브라우저가 종료되어도 유효 기간 내에는 인증이 유효합니다.

세션은 서버 측에 보관되는 사용자 정보 파일입니다. 서버에서는 많은 사용자를 구분하기 위해 세션 ID를 부여하여 브라우저가 종료될 때 까지 인증 상태를 유지합니다. 하지만 서버 메모리를 많이 차지 하고, 동접자 수가 많다면 서버에 과부하를 주게 되기 때문에 일정 시간 응답이 없다면 유지하지 않습니다.

728x90

'TIL' 카테고리의 다른 글

[OS] 프로세스와 스레드, Thread-safe  (0) 2022.08.13
[Network] DNS, RESTful  (0) 2022.08.02
[Network] Socket, PDU  (0) 2022.08.01
[Network] TCP/IP  (0) 2022.07.31
[Network] OSI 7계층  (0) 2022.07.29
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크