CORS

ClassBinu·2024년 4월 6일

Node.js 교과서

목록 보기
14/19

CORS

Cross-Origin Resource Sharing

다른 도메인의 자원을 요청할 수 있도록 하는 메커니즘
브라우저는 기본적으로 SOP(Same Origin Policy)를 따른다.
CORS를 허용해서 서로 다른 도메인끼리 통신이 가능하다.

다른 도메인으로 API 요청을 하면 브라우저가 CORS 요청을 보냄.
이때 서버가 응답 헤더에 CORS를 명시하여, 요청을 허용할지 거절할지 결정

즉 브라우저가 응답에서 CORS를 위반하면 자바스크립트로 응답에 접근하지 못하게 막는 것

CORS가 기본적으로 허용되지 않는 이유는?

CSRF

(Cross Stie Request Forgery)
사용자가 자신의 의지와 무고나하게 다른 사이트에서 요청을 발생시키는 것

은행 공격 예시

  1. 은행 로그인 -> 인증
  2. 해커 사이트 접속
  3. 해커 사이트에서 은행으로 API 요청
  4. 은행 API 요청 시 쿠키 자동 전송, 즉 내가 원하는 대로 인증된 상태로 공격 가능

방어 전략

  • CSRF 토큰: 서버는 폼 또는 AJAX 요청을 통해 제출될 때마다 검증할 수 있는 고유한 토큰을 제공합니다. 이 토큰은 사용자의 세션에 저장되며, 요청이 발생할 때마다 서버에 제출되어야 합니다.
  • SameSite 쿠키 속성: 쿠키에 SameSite 속성을 설정하여, 쿠키가 같은 출처 요청에만 포함되도록 합니다. 이는 다른 출처의 요청을 통해 쿠키가 전송되는 것을 방지할 수 있습니다.
  • 사용자 인증 요구: 중요한 작업을 수행하기 전에 추가적인 사용자 인증(예: 비밀번호 재입력, 이중 인증)을 요구합니다.

0개의 댓글