일단 진행시켜

[CORS] GET vs Optional Methods (POST, PUT, OPTIONS) 본문

🗞️ 보안 동향 파악 및 나의 생각 정리

[CORS] GET vs Optional Methods (POST, PUT, OPTIONS)

2024. 8. 27. 10:43

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

 

Setting Up CORS and Integration on AWS API Gateway - DZone

Learn about the significance of CORS, authorization including bearer tokens, and the advantages of selecting optional methods in place of standard GET requests.

dzone.com

 

 

 

[ 요약 ]

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를 사용해야 하는가? 그건 또 아니라고 본다. 매일 느끼는 거지만, 보안과 개발의 관점은 끝과 끝인 것 같다.

 

데이터의 성격과 수행되는 작업을 기반으로 더 적합한 방법을 선택하는 것이 중요해 보인다.