-
개프 하기 전 개념학습공부/spring 2023. 6. 5. 10:51
서버와 클라이언트
서버 : 제공하는 주체
클라이언트 : 제공받는 대상
서버의 종류
서버의 종류가 다른 이유 : 제공하는 서비스의 내용이 다르기 때문
서버 종류 종류 설명 웹 서버 웹 서비스를 제공하기 위한 서버 컴퓨터
apache, IIS, NginX와 같은 웹 서버 소프트웨어를 사용하여 웹 서비스할 수 있습니다웹 애플리케이션 서버 웹 애플리케이션을 제공하기 위한 서버 컴퓨터
tomcat, weblogic, websphere와 같은 웹 애플리케이션 서버 소프트웨어를 사용하여 웹 애플리케이션 서비스를 제공할 수 있습니다데이터베이스 서버 데이터베이스를 제공하기 위한 서버 컴퓨터
oracle, ms-sql, mysql과 같은 데이터베이스 소프트웨어를 사용하여 서비스할 수 있습니다파일 전송 서버 대용량의 파일을 빠르게 주고받기 위한 서버 컴퓨터입니다
vs-ftpd, iis와 같은 sw를 사용하여 서비스할 수 있습니다메일 서버 메일 서비스를 위한 서버 컴퓨터
send-mail, microsoft exchange server와 같은 sw를 사용하여 서비스할 수 있습니다인쇄 서버 공간의 제약을 극복하고 인쇄를 할 수 있도록 하는 서버 컴퓨터입니다
인쇄기 제품과 구성에 따라 해당 서비스를 지원하는 다양한 sw를 사용하여 서비스할 수 있습니서버 구성
- 서버 컴퓨터를 구성하는 관점
- 서버 컴퓨터의 종류, 서버 컴퓨터의 대수, 네트워크 정책, 서버 수용 인원 예측 등을 구성
서버 환경 설정
- 구성된 특정 컴퓨터 서버가 제공할 수 있도록 환경을 구성하는 과정
- 웹 서벌는 apache, iis, nginx와 같은 웹 서버 sw를 이용하여 웹 서비스를 가능케 하는 서버 환경 설정을 의미
- 웹 애플리케이션 서버는 tomcat, weblogic과 같은 웹 애플리케이션 서버 sw를 이용하여 웹 애플리케이션을 구동하여 서비스 가능케 하는 서버 환경 설정을 의미
서버 구성 작업을 진행 후 서버가 구성되면 각 컴퓨터 서버에 서버가 서비스할 목적에 맞는 서버 환경 설정을 진행해야 합니다
서버 구성 서버 환경 설정 작업에 해당하는 서버 세팅 작업이 완료되면 개발자는 개발한 제품을 연관된 개발, 운영 서버에 배포하여 웹 서비스 준비를 할 수 있습니다
클라이언트는 제품을 이용할수 있습니다
CORS
SOP : 애플리케이션 간에 출처가 다른 경우 스크립트 기반의 HTTP통신을 통한 리소스 접근이 제한되는 정책
CORS : 이런 접근 제한의 예외 조항으로써 사전 설정을 통해 리소스에 선택적으로 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 정책
브라우저는 SOP에 의해 기본적으로 다른 출처의 리소스 공유를 막지만 CORS를 사용하면 접근 권한을 얻을 수 있게 되는 것
CORS 동작 방식
프리플라이트 요청
- 실제 요청을 보내기 전, OPTIONS 메서드로 사전 요청을 보내 해당 출처 리소스에 접근 권한이 있는지 부터 확인
- 브라우저는 서버에 실제 요청을 보내기 전에 프리플라이트 요청을 보내고 응답 헤더의 ACCESS-CONTROL-ALLOW-ORIGIN으로 요청을 보낸 출처가 돌아오면 실제 요청을 보내게 된다
- 마냑 요청을 보낸 출처가 접근 권한이 없다면 브라우저에서 CORS에러를 띄우게 되고 실제 요청은 전달 안됨
단순 요청
- 특정 조건이 만족되면 프리플라이트 요청을 생략, 요청을 보내는 것
인증 정보를 포함한 요청
- 요청 헤더에 인증 정보를 담아 보내는 요청
- 출처가 다를 경우에는 별도의 설정을 하지 않으면 쿠키를 보낼 수 없다 (민감한 정보이기 때문)
- 이 경우에는 프론트엔드, 서버 양특 모두 CORS 설정이 필요
CORS 정책 설정 방법1. Global 설정 클래스를 이용
- 특정 도메인에 모두 적용
2. 애터네이션을 이용
- 컨트롤러단에서 적용하는 방법
애너테이션을 이용해 컨트롤러에서 설정하는 방법
- @CrossOrigin 애너테이션을 이용해 컨트롤러 혹은 메서드에서 cors 정책을 설정
@CrossOrigin // Controller에 애너테이션을 이용해 설정합니다. @RestController public class HelloController { ... }
<컨트롤러 단에서 애너테이션을 애용해 cors 설정>
애너테이션을 사용해 cors 설정을 하는 경우 옵션을 이용해 세부적인 설정을 추가할 수 있습니다
@CrossOrigin(origins = "https://codestates.com") @RestController public class HelloController { ... }
CSRF
- CORS : 다른 출처, CSRF : 다른 사이트
CSRF
- 사이트 간 요청을 위조하는 공격 ( 신뢰할 수 있는 사용자를 가장해 웹 사이트에 원치 않는 명령을 보내는 방식)