2010-07-29 11 views
6

bar.com 사이트에서 JavaScript를로드하는 foo.com 사이트가 있다고 가정 해보십시오. 이제 사이트 bar.com의 JavaScript가 document.cookies을 사용하여 쿠키를 읽으려고합니다. 자바 스크립트를 사용하면 소스에 관계없이 브라우저에 설정된 모든 쿠키를 읽을 수 있다는 인상하에있었습니다. 그러나 bar.com 사이트의 JavaScript는 으로 설정된 쿠키에만 액세스 할 수 있으며 다른 쿠키는 액세스 할 수 없습니다. 이 경우 쿠키를 훔치는 스크립트 주입 공격은 어떻게 수행됩니까?자바 스크립트 및 타사 쿠키

답변

5

그러나 bar.com 사이트의 JavaScript는 bar.com이 설정 한 쿠키에만 액세스 할 수 있으며 다른 쿠키는 사용할 수 없습니다.

사실이 아닙니다. 중요한 것은 <script> 요소가 포함 된 HTML 문서가 src 속성에 언급 된 <script>이라는 JS 파일의 URL이 아니라는 것입니다. 나는 당신의 문제가 의심

는 속성이 document.cookie 호출 될 때 당신이 document.cookies에 액세스하는 것입니다 (단수!)

+0

'http : // ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'는 CDN이 작동하는 방식이기도합니다. 도메인'stackoverflow.com'에 살고있다. –

+0

@David, 질문을 입력하는 동안 쿠키가 맞춤법 오류였습니다. 방금 alert (document.cookie)로 시도했지만 쿠키를 설정 했음에도 불구하고 빈 문자열을 얻었습니다. 나는 꽤 당황 스럽다. – roger

+0

나는 시험을 수행했다. 도메인은 별다른 차이가 없습니다. 아마도 가져 오려고하는 쿠키가 다른 경로에 있거나 HTTP만으로 설정되었을 것입니다. – Quentin

3

안에 공격 대상 페이지을로드합니다.

예를 들어 블로그 시스템의 주석이 유출되면 페이지가 렌더링 될 때 실행되는 요소가 포함됩니다. 이 스크립트는 쿠키를 가져 와서 공격자의 서버로 보낼 수 있습니다.

은 당신이 결코 신뢰 사용자 입력 및 의견 적어도 특정 태그를 허용 (또는 &lt;에 대한 모든 < 번역)해야하는 이유는 다음과 같습니다. 이 예방 기법은 쉽게 피할 수 있기 때문에 클라이언트 측에서하지 마십시오. 서버 측에서 악성 입력을 테스트 (및 변경)합니다.

3

할 수 있습니다 주어진 도메인 이름을 설정 한 경우에만 액세스 쿠키. Wikipedia article on cookies에서 : 이름/값 쌍 옆에

, 또한 쿠키가 암호화 연결에 대해서만 구성되어 있는지 만료일하는 경로, 도메인 이름 등을 포함 할 수있는 쿠키 . RFC 2965에서는 쿠키 에 버전 번호가 지정되어 있지만 일반적으로는 이 생략되었습니다. 이 데이터 조각 은 이름 = newvalue 쌍을 따르며 세미콜론으로 구분 된 입니다. 예를 들어, 쿠키는 서버가 행을 보내어 만들 수 있습니다. Set-Cookie : name = newvalue; 만료 = 날짜; 경로 = /; domain = .example.org.

도메인 및 경로 쿠키 가 다시 서버로 보낼 수있는 브라우저를 말할 때 주어진 도메인과 경로의 요청 URL이 표시됩니다. 지정되지 않은 경우 요청 된 오브젝트 의 도메인 및 경로에 기본값은 입니다. 결과적으로 도메인 및 경로 문자열은 이 정상적으로 쿠키를 보내지 않을 때 브라우저에 쿠키를 보내도록 지시 할 수 있습니다.보안상의 이유로 이유는 서버가 도메인 문자열로 지정된 도메인의 구성원 인 경우에만 으로 허용됩니다.

foo.com 경우 그 쿠키를 읽을 수 bar.com에 다음 자바 스크립트 코드를 bar.com의 도메인 이름을 가지고 쿠키, 또는 .com을 보냈다. 그러나 대부분의 브라우저는 도메인 이름이 일치 할 때만 쿠키를 허용하도록 구성되어 이러한 쿠키를 거부합니다.

+0

쿠키가 존재하지만 JavaScript가 쿠키를 읽을 수 없음을 확인했습니다. – roger

관련 문제