본문 바로가기
메모/Network

CORS, 브라우저 작동방식, 쿠키/세션

by 구너드 2023. 9. 22.

CORS

 

CORS(Cross-Origin Resource Sharing)는 다른 출처(도메인, 프로토콜 또는 포트)에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하는 웹 보안 메커니즘.

 

기본적으로 웹 브라우저의 보안 정책 중 하나인 SOP(Same-Origin Policy)는 스크립트 내에서 다른 출처의 리소스에 접근하는 것을 제한. 이 정책은 웹 애플리케이션을 걸쳐 사용자 데이터의 보안성을 유지하려는 목적으로 존재합. 그러나 웹 개발이 진화하면서 다양한 서비스 간의 상호운용이 필요해지면서, CORS는 이러한 요구를 안전하게 수용하기 위해 등장.

 

CORS는 다음과 같은 방식으로 작동

1. 클라이언트(웹 브라우저)는 서버의 리소스에 접근하는 요청을 보낼 때 Origin 헤더를 포함하여 전송. Origin 헤더는 클라이언트가 속한 출처의 정보 포함.

2. 서버에서는 이 요청을 받아 처리한 후, 결과에 대한 응답 헤더 중 'Access-Control-Allow-Origin' 헤더를 포함하여 클라이언트에게 전달합니다. 이 헤더는 서버 측에서 클라이언트의 요청을 허용하는 출처의 정보 포함.

3. 클라이언트가 서버로부터 응답을 받을 때, 웹 브라우저는 'Access-Control-Allow-Origin' 헤더의 정보와 클라이언트의 출처 정보를 확인합니다. 이때 출처 정보가 일치하면 요청에 대한 응답을 처리하고, 그렇지 않으면 보안 오류로 처리.

 

정리하자면, CORS는 서버와 클라이언트 간의 상호 허용 가능한 출처를 명시해서 다른 출처 간의 자원 공유를 안전하게 운용하는 웹 보안 기술. 이를 통해 원활한 웹 애플리케이션 상호작용이 가능해지며, 불필요한 제약 사항을 줄여 더 나은 사용자 경험을 제공.


브라우저 작동방식

 

1. 주소 입력: 브라우저를 열고 주소창에 웹 사이트 주소를 입력

2. 서버와 통신: 입력한 주소로 가기 위해 브라우저는 웹 사이트의 서버에 요청 전송. 이 후 서버는 해당 웹 사이트의 정보를 담은 파일들을 브라우저로 전송.

3. HTML 해석: 브라우저는 서버로부터 받은 정보들 중에서 가장 중요한 파일인 HTML 파일을 해석. (웹 사이트의 구조를 설명하는 언어).

4. 웹 페이지 생성: 브라우저는 HTML 파일을 해석하고 웹 사이트를 화면에 보여줄 준비. 이때, 웹 페이지에는 텍스트, 이미지, 버튼 등의 포함 가능성.

5. 자원 로딩: 웹 페이지에는 여러 자원(텍스트, 이미지, 버튼 등)들이 존재. 브라우저는 이러한 자원들을 서버에서 다운로드하여 화면에 표시.

6. 사용자와 상호작용: 웹 페이지가 화면에 나타난 후에는 사용자가 페이지와 상호작용 가능. 예를 들어, 링크를 클릭하면 다른 페이지로 이동하거나, 버튼을 누르면 어떤 동작의 실행 가능성

7. 보안 확인: 브라우저는 인터넷을 사용할 때 안전하게 사용할 수 있도록 보안을 체크. 악성 소프트웨어나 해커로부터 컴퓨터를 보호.

 

요약하자면, 브라우저는 우리가 웹 사이트를 보고 인터넷을 사용할 수 있게 해주는 프로그램. 주소를 입력하면 서버와 통신하여 웹 사이트의 정보를 받아오고, HTML 파일을 해석하여 웹 페이지를 만들어서 클라이언트에게 반환.


쿠키/세션

 

쿠키와 세션은 웹 애플리케이션에서 사용자 인증, 상태 관리 등에 사용되는 기술.

웹은 기본적으로 상태가 없는 무상태(stateless) 프로토콜인 HTTP를 사용하기 때문에, 이러한 기술들이 필요.

 

쿠키

클라이언트(브라우저)에 저장되는 작은 텍스트 파일로, 웹 서버가 이용자의 브라우저에 전송한 정보를 저장. 쿠키는 웹 서버와 브라우저 간의 상태 정보를 유지할 때 사용. 로그인 상태 유지, 방문자 추적, 선호 사이트 설정 등의 목적으로 사용 가능.

장점 - 서버의 부하 감소. 쿠키 정보는 클라이언트에서 저장되기 때문에 서버의 자원 사용이 비교적 적음.

단점 - 클라이언트에 저장되어 브라우저가 송수신하는 쿠키 정보가 탈취되거나 변조될 위험 존재.쿠키는 용량이 제한되어 있어 많은 정보를 저장하기에는 부적합

 

세션

세션은 쿠키와 달리 서버 측에서 사용자 정보를 저장하고 관리하는 기술.

각각의 사용자에게 고유한 세션 ID를 할당하여 이를 쿠키 또는 URL 매개 변수로 사용하여, 서버에서 해당 사용자의 정보를 참조. 사용자의 로그인 상태 유지, 사용자별 설정 정보 관리 등의 목적으로 사용 가능.

 

장점 - 사용자 정보를 보안성 높게 저장 및 관리 가능. 사용자 정보는 서버에서 관리되므로 클라이언트에서 수정될 일이 발생X. 세션의 저장 용량에 제한이 없어, 다양한 정보를 저장 가능

단점 - 사용자가 많아질수록 서버의 메모리 사용량이 증가. 대규모 서비스의 경우 세션 정보를 별도의 데이터베이스 등에 저장해야 하는 상황 발생

 

쿠키와 세션의 차이점

1. 저장 위치: 쿠키는 클라이언트에 저장되며, 세션은 서버에 저장.

2. 보안성: 쿠키는 클라이언트에서 변조될 위험이 있고, 세션은 서버에서 관리되기 때문에 상대적으로 안전.

3. 저장 용량: 쿠키는 용량이 제한되어 있으며, 세션은 제한 없음.

4. 서버 부하: 쿠키는 서버의 부하가 비교적 적으며, 세션은 서버의 부하가 더 큽니다.

쿠키와 세션은 웹 애플리케이션에서 상태 정보를 유지하기 위한 기술로, 상황에 따라 적절한 기술을 사용하여 사용자 인증 및 개인화된 서비스를 제공.

'메모 > Network' 카테고리의 다른 글

RestAPI  (0) 2023.10.15
GET/POST, TCP/UDP, http(s)  (1) 2023.10.09
대규모 트래픽, AWS S3/EC2  (1) 2023.10.05
OSI 7계층,세션 기반 인증/토큰 기반 인증,JWT/Refresh/Access/Token,OAuth  (2) 2023.09.24