TIL 21.05.27

Jaemin Jung·2021년 5월 28일
0

Today I Learned

목록 보기
29/62
post-thumbnail

오늘한일

오늘은 웹서버를 만들어보았다.
웹서버를 만들때 주의해야할 보안정책인 cors에 대해서 알게되었고,
cors가 돌아가는 로테이션에 대한 과제를 수행하였다.

Achievement Goals

(이해한대로 작성하였기에 틀릴수도 있습니다. 계속 공부하며 수정해 나가겠습니다.)

Browser Security

브라우져가 자바스크립트를 구동하기때문에 보안 위협의 문제가 있다.
자바스크립트로는 할 수 있는것들 많기 때문에 위험한 일까지 건드릴수 있다.
예를 들어서 ajax call, api호출, dom 제어등이 있고,
이를 이용한 보안 위협이 존재한다.

  1. XSS 공격방식
    클라이언트가 서버로 부터 받은 정보를 신뢰 하기 때문에
    발생하는 이슈를 말하며,브라우저에서는 기본적인 XSS 공격을 막고있다.

  2. CSRF 공격방식
    반대로 서버가 클라이언트를 신뢰해서 발생하는 이슈를 말한다.
    서버가 자신에게 해가되는행동을 정해놓지는 않기때문에
    클라이언트가 인증정보를 가지고 오면 신뢰한다.

CORS (Cross-Origin Resource Sharing)

CORS가 나오게된 배경

이전에는 하나의 출처(Origin)에서 리소스 요청 응답등 모든것을 해결하는것이 당연한 일이었기에,(Same-origin policy 브라우저 기본설정은 한가지 서버만 연결)
다른 출처에 리소스를 요청한다는것은 뭔가 개인정보 유출, 피싱 사이트와 같이
보안상 악의적인 행동을 하는걸로 인식이 되었기에 웹브라우저 보안 정책으로 이를 막았다.

여기서 출처(Origin)란 domain,scheme,port로 이루어져 있고,
이 3가지가 다 같을 경우 같은 출처(Origin)라고 할 수 있다.

하지만 요즘에는 프론트엔드 레이어와 API 서버 레이어를 따로 구성하는 경우가 많다.
하나의 웹사이트에서 날씨정보를 가진 API를 가져와 날씨 정보를 알려주는등,
다른 출처에 리소스를 요청한다는 것이다.

기존 보안 정책으로 이를 막아두었기에 개발에 상당히 불편함을 느꼈을것이고,
개발자들은 보안 정책을 빠져나갈 뒷구멍을 만들기 시작하였다.
결국 웹브라우저는 이러한 보안정책을 조건부로 허용해주기로 하였고 이것이 CORS이다.

CORS에 대한 기본적인 내용

CORS 는 HTTP 헤더에 기반하는 메커니즘으로
한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는
권한을 부여하도록 브라우저에 알려주는 체제이다.

웹 애플리케이션을 A라고 하고 다른 출처를 B라고 하면,
A가 B가 가진 자원을 사용하겠다고 요청을 하고,
B는 본인이 정해놓은 허용 기준에 A가 맞는다면 이를 사용할 수 있도록 권한을 주어 허용해주며,
이를 사용하기위한 약간의 규칙을 알려준다는 과정이라고 보면 쉽다.

요청 방법에는 3가지가 있다.
1. Simple requests(단순 요청)
2. Preflighted requests(프리플라이트 요청)
3. Requests with credentials(인증정보를 포함한 요청)

Preflighted requests(프리플라이트 요청)

HTTP 요청이 두 번 이루어지는 요청 방법이다.
처음 전송되는 리소스의 도메인가 다른 도메인으로부터 리소스가 요청될경우
해당 리소스는 cross-origin HTTP요청에 의해 요청된다.
Preflighted requests는 바로 본 요청을 보내지 않고
OPTIONS 메서드를 이용해 HTTP 예비 요청을 먼저 보낸다.
해당 서버는 접근하는 출처가 안전한지 여부를 확인하고,
예비 요청이 승인되면 본 요청을 한다.

참고사이트

https://developer.mozilla.org/ko/docs/Web/HTTP/CORS
https://velog.io/@eensungkim/CORS-TIL-52%EC%9D%BC%EC%B0%A8
https://www.youtube.com/watch?v=yTzAjidyyqs
https://evan-moon.github.io/2020/05/21/about-cors/

profile
내가 보려고 쓰는 블로그

0개의 댓글