2016-09-14 1 views
21

내 관점에서 볼 때 CORS (Cross-Origin Resource Sharing)CSP (콘텐츠 보안 정책)은 목적과 구현이 매우 비슷합니다.CORS와 CSP의 차이점은 무엇입니까?

둘 다 HTTP 응답 헤더를 통해 귀하의 웹 페이지의 타협없는 버전이 통합 한 자원의 출처를 허용 할 수 있습니다. 내가 볼 수있는 유일한 차이점은 CSP가 HTTP 응답에서 승인 할 수있는 것보다 세분화 된 것처럼 보입니다.

답변

29

CORS는 Same Origin Policy이 도메인에 대해 완화되도록 허용합니다.

일반적으로 사용자가 example.comexample.org에 모두 로그인하면 동일 원점 정책은 example.com이 AJAX 요청을 example.org/current_user/full_user_details으로 만들고 응답에 액세스하지 못하게합니다.

이것은 웹의 기본 정책이며 동시에 여러 사이트에 로그인 할 때 사용자의 데이터 유출을 방지합니다.

CORS를 사용하면 example.org은 AJAX가 작성한 응답을 https://example.com이 읽을 수 있도록 정책을 설정할 수 있습니다. example.comexample.org이 같은 회사에서 실행되고 원본 간의 데이터 공유가 사용자의 브라우저에서 허용되는 경우이 작업이 수행됩니다. 클라이언트 측에만 영향을주고 서버 측에는 영향을 미치지 않습니다.

CSP는 현재 사이트에서 실행할 수있는 콘텐츠의 정책을 설정합니다. 예를 들어, JavaScript를 인라인으로 실행하거나 파일을로드 할 수있는 도메인이 .js 인 경우 이는 XSS 공격에 대한 또 다른 방어선 역할을하는 데 유용 할 수 있습니다. 공격자는 스크립트를 HTML 페이지에 삽입하려고 시도합니다. 일반적으로 output would be encoded, 그러나 개발자가 하나의 출력 필드에서만 잊어 버렸다고합니다. 이 정책은 인라인 스크립트가 실행되는 것을 막기 때문에 공격은 차단됩니다.

+0

매우 도움이 답변을 주셔서 감사합니다 (나는 upvoted하지만 내 담당자는 그것을 계산하기 위해 낮은 것입니다). 내가 따라 올 수없는 부분은 "보통 출력은 인코딩 될 것"이었다. 아마도 이것을 조금 분명히 할 수 있다면 다른 사람들을 도울 것입니까? – nickform

+0

예. 나는이 비트를 설명하기 위해 또 다른 대답에 연결했다. 추가 설명이 필요한 경우 알려 주시기 바랍니다. – SilverlightFox

+0

네, 고마워요. 지금 제가 따라합니다. – nickform

16

CORS는 사이트 A가 사이트 B가 사이트 A의 데이터를 읽을 수 있도록 허용합니다 (방문자의 브라우저 및 자격 증명 사용).

CSP는 사이트 (예를 들어, XSS에 대한 방어 등) 예상치 못한 소스 (악성) 내용을로드에서 자체을 방지 할 수 있습니다.

1

CORS는 제 3 자에게 서비스 사용 승인을 확인합니다. 따라서 타사는 승인을 제공하거나 거부합니다.

예를 들어 www.example.com의 페이지가 www.example.org에 요청해야한다면 www.example.org로 보낸 OPTIONS 요청을 Origin : www.example.com과 같이 보내야합니다. 승인 요청을위한 선구자. 이제 www.example.org는 승인을 제공하거나 거부합니다.

CSP는 특정 유형의 콘텐츠를로드 할 수있는 위치를 지정하여 웹 페이지가 실수로 제 3 자의 악성 콘텐츠를로드하는 것을 방지합니다. 따라서, 예를 들어, 당신은 사용 지침

하여 다음 스크립트, CSS, 미디어 등 각 올바른 소스를 제공 할 수

예 :

콘텐츠 보안-정책 : 기본-SRC '없음'; script-src 'self'www.google-analytics.com ajax.googleapis.com; connect-src 'self'; img-src 'self'; 스타일 - src '자기';

관련 문제