1. 💡 체크리스트
체크리스트
이번 프로젝트에서는 Spring Security, CSRF 설정을 안하므로, Spring Boot에서의 CSRF 설정방법 등 알아보기
1. 할 일 목록을 관리하는 웹 어플리케이션 개발
2. Tomcat 을 이용한 로컬 환경 수동배포
3. Ngrok을 통한 외부 접근 설정
4. Postman & todobackend 사이트를 이용한 결과 확인
2. 💡 CORS & CSRF
2.1. Cross-Origin Resource Sharing
- 어플리케이션 간 출처(Origin)이 다를때 적용되는 Resource ACL(SOP)
- CORS는 이 ACL의 예외 조항으로, 화이트리스트 방식으로 선택적 접근 권한 허용 가능
- 즉, SOP에서 다른 Origin에서의 리소스 공유를 막고, CORS로 부분 허용해줌
2.2. CORS 동작 방식
- Request Preflight
- 요청을 보내기 전, 사전요청(Option Method)을 보내 목적지의 리소스에 권한이 있는지 확인
- 응답 헤더에 Access-Control-Allow-Origin로 보낸 Origin이 돌아오면 실제 요청 전송
- 요청을 보낸 Origin이 접근 권한이 없으면 CORS 반환
- Request Simple
- 특정 조건이 만료되면 Preflight 단계를 생략하고 요청 전송
- Request Credentialed
- 요청 헤더에 Credential을 담아서 보냄
- Origin이 다를경우, 별도의 설정을 안하면 쿠키 전송 X (민감정보이기 때문에)
- Client & Server 양측의 CORS 설정 필요
2.3. CORS 설정 (Backend) - Option 1
- 설정 클래스를 이용한 Global CORS 적용 - (이번 프로젝트에선 사용 X)
- Annotation을 이용한 컨트롤러 & 메소드 단의 CORS 적용
- @CrossOrigin
- Attr - (origins = "https://...")
- @CrossOrigin
CSRF란 ?
- Cross-Origin(다른 출처) & Cross-Site(다른 사이트)
- 사이트 간 요청 위조 공격
- Spring Security는 CSRF 공격에 대해 Default 차단 되어있음 (CSRF Token 검증)
'Project > Sample Project' 카테고리의 다른 글
💻 Sample Project - 기능 구현 후 요청 테스트 (0) | 2022.12.10 |
---|---|
💻 Sample Project - Ngrok을 이용한 NAT (0) | 2022.12.09 |
💻 Sample Project - Tomcat을 이용한 수동 배포 (0) | 2022.12.09 |
📄 Sample Project - 기능 요구사항 (1) | 2022.12.09 |