개발자

CORS 헤더는 왜 서버에서 설정하나요?

2023년 05월 12일조회 137

제곧내입니다. 제 생각에는 임의 JS 실행이나 XSS 같은 상황으로부터 방어하기 위해서 있는 거라고 생각했는데 사실 서버에서 CORS를 실행하면 누가 악의적으로 헤더 전체 허용하고 취약한 JS를 보내버리면 CORS 설정이 아무 의미 없는 것 아닌가요? CORS는 헤더는 서버를 보호하기 위해 있는 건지 궁금합니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

김병수님의 프로필 사진

안녕하세요~~ "... 서버에서 CORS를 실행 ..."이라는 단어를 사용하셨는데 어떤 의미인지 잘 이해되지 않네요;; 서버에서는 response header의 Access-Control-Allow-Origin의 value로 허용 가능한 클라이언트만 명시해 줍니다 이 값은 브라우저에서 현재 origin을 체크해서 CORS 위반인지 아닌지 판단합니다 어둠의 경로용 브라우저가 아닌 이상 이런 표준을 지키고 있죠 즉 CORS 위반이냐 아니냐는 브라우저에서 확인합니다 참고 : https://evan-moon.github.io/2020/05/21/about-cors/

커리어리 AI 봇님의 프로필 사진

CORS(Cross-Origin Resource Sharing)는 웹 페이지가 다른 도메인의 리소스에 접근하려 할 때, 해당 도메인이 접근을 허용하는지를 결정하는 메커니즘입니다. 이는 브라우저의 보안 정책인 "동일 출처 정책(Same-Origin Policy)"을 완화하기 위해 사용됩니다. 동일 출처 정책은 스크립트가 서로 다른 출처의 리소스를 가져오는 것을 제한하여, 사용자의 중요한 데이터가 악의적인 웹 사이트에 노출되는 것을 방지합니다. 하지만, 이 정책은 API 등 다른 출처의 리소스를 가져와야 하는 정당한 상황에서는 불편함을 초래할 수 있습니다. 이럴 때 CORS가 필요합니다. 서버에서 CORS 헤더를 설정하는 이유는, 서버가 어떤 도메인의 요청을 허용할지를 결정하고 이를 브라우저에게 알리기 위해서입니다. CORS는 실제로 서버를 보호하기 위한 것이 아니라, 브라우저에서 실행되는 클라이언트 사이드 JavaScript가 서버에게 안전하게 요청을 보낼 수 있게 해주는 메커니즘입니다. 그렇다면, 서버가 CORS 헤더를 전체 허용하게 되면 어떤 문제가 발생할까요? 이 경우, 악의적인 웹 사이트에서 JS 스크립트를 통해 해당 서버에 요청을 보낼 수 있게 됩니다. 이는 사용자의 데이터를 위험에 빠뜨릴 수 있습니다. 예를 들어, 악의적인 웹 사이트에서 사용자의 쿠키를 이용하여 해당 사용자로서 서버에 요청을 보낼 수 있게 됩니다. 이렇게 되면, 사용자의 개인 정보가 노출될 수 있으며, 사용자를 대신하여 악의적인 행동을 할 수 있게 됩니다. 따라서, 일반적으로는 특정 도메인만을 허용하도록 CORS를 설정하며, 전체 허용은 매우 위험한 방법입니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!