Developers don’t understand CORS
Source
Evernote/Technote scraps/Developers don't understand CORS.md
Summary
이 문서는 많은 웹 개발자들이 CORS(Cross-Origin Resource Sharing)의 작동 원리를 제대로 이해하지 못해 보안 취약점을 초래하는 사례를 분석한다. 최근 Zoom의 로컬호스트 웹서버 취약점을 예로 들며, 개발자들이 CORS 우회를 위해 이미지 크기 해킹(Image Hack) 같은 비표준 방식을 사용하거나, Access-Control-Allow-Origin: *과 같은 불안전한 설정을 적용하는 경향을 지적한다. 저자는 CORS를 우회하지 말고, 적절한 Access-Control-Allow-Origin 헤더와 Content Security Policy(CSP)를 사용하여 로컬 리소스에 대한 접근을 안전하게 제어해야 한다고 강조한다.
Key Points
- 많은 개발자가 CORS의 본질을 오해하거나, 개발 편의를 위해 보안 메커니즘을 우회하는 경향이 있다.
- Zoom 사례: 로컬호스트 웹서버에 대한 AJAX 요청을 CORS로 차단당하자, 이미지 차원을 이용한 상태 코드 전달이라는 비표준 우회 방식을 사용하며 심각한 보안 취약점을 노출했다.
- 올바른 구현: 로컬 서버는
Access-Control-Allow-Origin헤더를 통해 특정 도메인(예: zoom.us)만 접근하도록 제한해야 하며, iframe 임베딩 방지를 위해 CSP도 설정해야 한다. - Stack Overflow 등에서 권장되는
Access-Control-Allow-Origin: *과 같은 설정은 프로덕션 환경에서 심각한 보안 리스크를 초래할 수 있다. - 로컬호스트 웹서버는 인터넷의 모든 페이지에서 접근 가능한 상태가 되어서는 안 되며, CORS는 이를 방지하기 위한 핵심 보안 도구로 올바르게 사용되어야 한다.