Programing

CORS를 활성화하는 것은 언제 안전합니까?

lottogame 2020. 11. 9. 07:42
반응형

CORS를 활성화하는 것은 언제 안전합니까?


저는 특히 제 3 자 웹 사이트가 AJAX를 통해 내 서비스를 호출 할 수 있도록하는 JSON / REST 웹 API를 개발 중입니다. 따라서 내 서비스는 유명한 CORS 헤더를 보냅니다.

Access-Control-Allow-Origin: *

타사 사이트에서 AJAX를 통해 내 서비스를 호출 할 수 있습니다. 지금까지는 괜찮습니다.

그러나 내 웹 API의 하위 섹션은 비공개이며 인증이 필요합니다 (OAuth 및 access_token 쿠키가있는 매우 표준적인 항목). 내 사이트의이 부분에서도 CORS를 활성화하는 것이 안전합니까?

한편으로는 타사 웹 사이트에 내 서비스의이 부분과 상호 작용하는 ajax 클라이언트가있을 수 있다면 멋질 것입니다. 그러나 처음에 동일한 출처 정책이있는 이유는 이것이 위험 할 수 있기 때문입니다. 나중에 방문하는 웹 사이트가 개인 콘텐츠에 액세스 할 수 있기를 원하지 않습니다.

내가 두려워하는 시나리오는 사용자가 웹 사이트 또는 자신이 신뢰하는 웹 사이트를 통해 내 웹 API에 로그인하고 로그 아웃하는 것을 잊는 것입니다. 이렇게하면 그가 나중에 방문하는 다른 모든 웹 사이트가 기존 세션을 사용하여 개인 콘텐츠에 액세스 할 수 있습니까?

그래서 내 질문 :

  • 비공개 콘텐츠에서 CORS를 활성화하는 것이 안전합니까?
  • CORS 사용 서버가 쿠키를 통해 session_token을 설정하는 경우이 쿠키가 CORS 서버 또는 기본 웹 페이지 서버의 도메인 아래에 저장됩니까?

두 번째 질문 (CORS 사용 서버가 쿠키를 통해 session_token을 설정하는 경우 ...?)에 대한 답변으로 쿠키는 CORS 서버의 도메인 아래에 저장됩니다. 메인 웹 페이지의 JS 코드는 .NET을 통해서도 쿠키에 액세스 할 수 없습니다 document.cookie. 쿠키는 .withCredentials속성이 설정된 경우에만 서버로 전송되며 , 그 후에도 서버가 Access-Control-Allow-Credentials헤더를 설정 한 경우에만 허용됩니다 .

첫 번째 질문은 좀 더 개방형입니다. 상당히 안전하지만 상황을 피할 수있는 방법이 있습니다. 예를 들어 공격자는 DNS 포이즈 닝 기술을 사용하여 실행 전 요청이 실제 서버에 도달하도록하지만 실제 CORS 요청을 불량 서버로 보낼 수 있습니다. 다음은 CORS 보안에 대한 추가 리소스입니다.

마지막으로 CORS 데이터에 대한 모든 웹 사이트 액세스를 제공 하는 것이 우려 됩니다. 이를 방지하려면 Access-Control-Allow-Origin: *헤더를 사용하지 않아야합니다 . 대신 사용자의 Origin 값을 반향해야합니다. 예를 들면 :

Access-Control-Allow-Origin: http://www.example.com

이 헤더는 http://www.example.com응답 데이터 에만 액세스 하도록 허용합니다 .


CORS의 의도는 XHR 요청에 대한 교차 출처 요청을 허용하는 동시에 서버에 어떤 출처가 어떤 리소스에 액세스 할 수 있는지 지정할 수있는 권한을 부여하는 것입니다. 특히 CORS 는 서버가 정기적이고 가능한 XHR 요청을 구분할 수 있도록 하는 Origin 헤더 필드를 도입했습니다 . 이 헤더 필드는 사용자가 설정하거나 변경할 수 없지만 XHR 요청에 대해 브라우저에서 설정합니다.

따라서 XHR에서만 사용하도록 설계된 API가있는 경우 CORS를 준수하도록 요청을 요구할 수 있습니다. 특히 요청이 서버의 상태를 수정할 수 있다면 CSRF에 취약 할 수 있습니다.

CSRF 공격은 다른 방법을 사용하여 GET 및 POST 요청을 위조하는 CORS에 관계없이 가능합니다. CORS는 서버가 허용하는 경우에만 JavaScript로 XHR 요청의 서버 응답에 액세스 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/9713644/when-is-it-safe-to-enable-cors

반응형