공부/spring

개프 하기 전 개념학습

qlek1108 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

- 사이트 간 요청을 위조하는 공격 ( 신뢰할 수 있는 사용자를 가장해 웹 사이트에 원치 않는 명령을 보내는 방식)