[http-headers] Access-Control-Allow-Credentials 헤더는 정확히 무엇을합니까?

CORS를 사용하는 방법을 이해하려고 노력하고 있으며 Access-Control-Allow-Credentials헤더의 기능 에 대해 혼란스러워 합니다.

문서 는 말합니다

자격 증명 플래그가 true 일 때 요청에 대한 응답을 표시 할 수 있는지 여부를 나타냅니다.

그러나 나는 “노출 된”응답이 무엇을 의미하는지 이해하지 못한다.

자격 증명 플래그가 true로 설정되어있는 경우이 헤더가 true로 설정된 것을 실제로 설명 할 수있는 사람이 있습니까?



답변

기본적으로 CORS는 출처 간 요청에 쿠키를 포함하지 않습니다. 이것은 JSON-P와 같은 다른 교차 출처 기술과 다릅니다. JSON-P에는 항상 요청에 쿠키가 포함되며이 동작으로 인해 사이트 간 요청 위조 ( CSRF) 라는 취약성 클래스가 발생할 수 있습니다 .

CORS에서 CSRF 취약점의 가능성을 줄이려면 CORS는 서버와 클라이언트 모두 요청시 쿠키를 포함 할 수 있음을 인정해야합니다. 이렇게하면 쿠키없이 수동적으로 발생하는 것이 아니라 쿠키가 능동적으로 결정됩니다.

클라이언트 코드가 있어야 설정된 withCredentials상의 특성 XMLHttpRequesttrue권한을 부여하기 위해.

그러나이 헤더만으로는 충분하지 않습니다. 서버 Access-Control-Allow-Credentials 헤더로 응답 해야합니다 . 이 헤더로 응답 true한다는 것은 서버가 쿠키 (또는 다른 사용자 자격 증명)가 출처 간 요청에 포함되도록 허용한다는 것을 의미합니다.

또한 출처 간 자격 증명 요청이 작동하도록하려면 브라우저가 타사 쿠키를 차단하지 않아야 합니다.

동일 출처 또는 교차 출처 요청에 관계없이 CSRF로부터 사이트를 보호해야합니다 (특히 요청에 쿠키가 포함 된 경우).


답변