22P by ragus 8일전 | ★ favorite | 댓글과 토론

1. CORS는 브라우저 설계 결함을 보완하기 위한 임시방편임을 이해하세요.

  • CORS(교차 출처 리소스 공유)는 교차 출처 요청의 암묵적 자격 증명으로 인한 보안 문제를 해결합니다.
  • 브라우저의 기본 동작은 사용자에게 XSRF 공격에 노출될 위험을 초래합니다.
  • CORS는 이러한 문제를 완화하려 하지만, 보안 범위에서 근본적인 한계를 가지고 있습니다.

2. CORS는 교차 출처 요청의 결과를 읽는 것을 방지하지만, 요청 자체는 차단하지 않습니다.

  • fun-games.example은 your-bank.example의 데이터를 읽을 수 없지만, 자금 이체와 같은 상태 변경 요청을 여전히 실행할 수 있습니다.
  • 이는 브라우저가 쿠키와 자격 증명을 기본적으로 처리하는 방식 때문입니다.

3. 효과적인 교차 출처 보안은 암묵적 자격 증명을 무시하는 것에서 시작됩니다.

  • 교차 출처 요청에서 쿠키와 유사한 자격 증명을 제거하거나 명시적으로 허용합니다.
  • Sec-Fetch-* 헤더를 활용하여 교차 출처 쿠키를 필터링하거나 제거하는 미들웨어를 사용합니다.

4. 명시적 자격 증명은 암묵적 자격 증명보다 안전한 대안입니다.

  • 쿠키 대신 인증 토큰에 Authorization 헤더를 사용합니다.
  • 명시적 자격 증명은 다른 사이트 간의 자격 증명 오용을 방지합니다.
  • 서버 렌더링 사이트에는 적합하지 않지만 API와 클라이언트 측 애플리케이션에는 최적의 방법입니다.

5. SameSite 쿠키를 구현하여 교차 출처 자격 증명 사용을 제한하세요.

  • 기본적으로 교차 출처 요청에 쿠키가 포함되지 않도록 SameSite=Lax를 사용합니다.
  • 더 엄격한 정책을 위해 SameSite=Strict를 선택하세요. 다만, 이로 인해 사용성(예: 교차 출처 탐색 후 로그아웃)에 영향을 줄 수 있습니다.

6. 간단하고 안전한 CORS 정책을 채택하세요.

  • 기본 정책: Access-Control-Allow-Origin: *Access-Control-Allow-Methods: *는 익명 액세스만 허용합니다.
  • 이 정책은 교차 출처 요청의 암묵적 자격 증명을 비활성화하여 의도치 않은 자격 증명 오용으로부터 사이트를 보호합니다.

7. 보안을 위해 CORS 정책을 지나치게 복잡하게 만들지 마세요.

  • 지나치게 구체적으로 설정하면 잘못된 보안 감각을 만들 수 있습니다.
  • CORS 프록시 및 기타 해결 방법은 브라우저가 강제하는 정책을 우회할 수 있어 액세스 제한 노력을 무효화합니다.

8. 더 안전한 웹 기본값으로 이동하는 광범위한 움직임을 이해하세요.

  • 브라우저는 교차 출처 자격 증명 문제를 해결하기 위해 State Partitioning(파이어폭스), Tracking Prevention(사파리), CHIPS(크롬)과 같은 방식을 탐구하고 있습니다.
  • 이러한 이니셔티브는 출처 간 쿠키 및 자격 증명 공유를 제한하여 사용자 보안 및 개인 정보를 개선하려고 합니다.

9. CORS가 불완전한 솔루션임을 인식하세요.

  • CORS의 하위 호환성은 복잡성을 추가하면서도 기본 보안 문제를 완전히 해결하지 못합니다.
  • 브라우저는 이러한 문제를 완화하기 위해 새로운 접근 방식을 천천히 채택하고 있지만, 진행 상황은 일관되지 않습니다.