일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 리눅스 마스터
- 네트워크
- 러시아
- 제로 트러스트
- 보안
- 리눅스
- 기업간의 협업 중요성
- 악성코드
- 프로토콜
- Cloud
- tcp
- 리마2급2차
- 보안이슈
- 스프링부트
- CVE
- security
- 깃허브
- 클라우드
- 오답노트
- Java
- 스프링
- 개발자
- 네트워크관리사
- SSO
- 오늘의 오답노트
- 트랜잭션
- Linux
- AWS
- db
- 네관사2급
- Today
- Total
일단 진행시켜
[CORS] GET vs Optional Methods (POST, PUT, OPTIONS) 본문
1. Setting Up CORS and Integration on AWS API Gateway Using CloudFormation
https://dzone.com/articles/setting-up-cors-and-integration-on-aws-api-gateway
[ 요약 ]
CORS의 중요성
- 여러 도메인에서 액세스가 필요할 때 API 개발에 매우 중요하다(CORS는 무단 액세스를 막는데 필수적)
- API와 상호 작용할 수 있는 특정 도메인을 구분함으로써 유효한 cross-origin 요청만 허용하여 CSRF 공격으로부터 보호할 수 있다
- 보안(Security): 도메인 액세스를 규제하여 유해한 cross-origin 요청으로부터 API를 보호
- 유연성(Flexibility): 특정 도메인에 대해 다양한 액세스 수준(GET, POST, DELETE)을 활성화
- 사용자 경험(User experience): 오류 발생 없이 도메인 전체의 리소스에 원활하게 액세스 할 수 있다
GET vs Optional Methods(POST, PUT, OPTIONS)
CORS 설정을 위해 GET 대신 Optional Methods를 사용해야 하는 필요성을 이해해야 한다!
이유 | GET | OPTIONAL METHODS (POST, PUT, OPTIONS) |
보안 (Security) | GET 요청은 URL에 표시되어 캐시될 수 있음 → 민감한 정보의 경우 보안성이 낮음 |
POST/PUT은 URL에 표시되지 않아 캐시되지 않음 → 민감한 데이터의 보안을 강화할 수 있음 |
유연성 (Flexibility) | URL을 통한 데이터 전송이 제한되어, 전송할 수 있는 데이터의 복잡성의 크기가 제한 됨 → 단순한 데이터만 전송 가능 |
request body에 복잡한 데이터 구조를 전송할 수 있음 → 유연성이 더 높음 |
멱등성과 안전성 (Idempotency and Safety) |
멱등적이고 안전하다 → 리소스의 상태를 수정하지 않음 |
POST/PUT은 데이터 변경 작업에 사용되고, OPTIONS는 OPTIONAL METHODS를 확인하는데 사용 됨 |
CORS Preflight | GET 요청은 일반적으로 CORS 사전 검사에 사용되지 않음 | OPTIONS 요청은 CORS 사전 검사에 필수적이며, 실제 요청이 수행될 수 있는지를 확인 |
*멱등성: 초기 적용 이후 결과를 변경하지 않고, 여러 번 수행할 수 있는 특정 작업의 속성(HTTP methods: GET, PUT)
* Preflight : OPTIONS 요청에 대한 응답. 적절한 CORS 헤더를 전송하여 서버가 도메인의 원본 간 요청을 명시적으로 허용하는지 확인
요약
1. CORS를 설정하고, CloudFormation을 통해 AWS API Gateway를 통합하면 API 액세스를 효율적으로 관리할 수 있다
2. 허용된 출처의 요청만 액세스함으로써 API를 안전하게 유지할 수 있다
3. CORS를 이해하고 구현하면 도메인 간 환경에서 안전하고 효율적인 상호 작용을 보장할 수 있다
GET과 OPTIONAL METHODS
1. 보안: GET은 URL에 데이터를 노출하지만, POST/PUT은 body에 전송하여 캐시 되지 않음
2. GET은 전송 데이터 크기가 제한적이지만, POST/PUT은 복잡한 데이터 처리가 가능함
3. GET(PUT)은 멱등성이지만, POST는 그렇지 않음 (POST는 리소스를 생성하고 PUT은 리소스를 업데이트하며 해당 동작은 멱등성 및 응답 처리 측면에서 다양성을 띤다)
4. GET은 프리플라이트를 트리거하지 않지만, OPTIONS는 CORS 확인에 필수적
➕
CORS(Cross-Origin Resource Sharing)?
- 웹 브라우저에서 사용하는 필수적인 보안 메커니즘
- 도메인, 프로토콜 또는 포트가 다른 곳에서 서버 리소스에 대한 규제된 액세스를 허용함
- API 영역에서, 특히 AWS API Gateway에서 CORS 구성은 웹 애플리케이션에 대한 액세스를 용이하게 하고, 잠재적 보안 위험을 완화하는 데 매우 중요하다
🤔 이에 대한 나의 생각
CloudFormation을 사용하여 API Gateway 구성을 관리하면 일관성 보장 및 반복성을 줄일 수 있어, 수동 오류를 줄일 수 있음을 배웠다. 또, 보안을 위해서는 CORS를 필수적으로 고려하는 것이 적절하다.
무단 액세스로부터 API를 보호하고, 민감한 데이터 처리를 위한 GET과 POST/PUT의 차이점을 이해하는 것은 개발자에게 중요한 지식이라고 생각한다.
그렇다고 무조건 OPTIONAL METHODS를 사용해야 하는가? 그건 또 아니라고 본다. 매일 느끼는 거지만, 보안과 개발의 관점은 끝과 끝인 것 같다.
데이터의 성격과 수행되는 작업을 기반으로 더 적합한 방법을 선택하는 것이 중요해 보인다.
'🗞️ 보안 동향 파악 및 나의 생각 정리' 카테고리의 다른 글
Java 동시성: 가시성 및 동기화 (0) | 2024.08.29 |
---|---|
[Passkeys & 제로 트러스트] 사용 확대화: "비밀번호를 없애자" (1) | 2024.08.28 |
향상된 Cyber Resilience를 위한 Flask + RDF: 시맨틱 웹 기술 활용 (0) | 2024.08.26 |
[Java] Java로 강력한 REST API 구축 4가지 팁 (0) | 2024.08.25 |
[legacy] JMS+SQS → 레거시에 대한 나의 생각 (0) | 2024.08.23 |