subdomain.example.com이 example.com에서 읽을 수있는 쿠키를 설정할 수 있습니까?


26

나는 이것이 결정하기가 너무 어렵다고 믿을 수 없다.

RFC를 읽은 경우에도 subdomain.example.com의 서버가 example.com에서 읽을 수있는 쿠키를 설정할 수 있는지 확실하지 않습니다.

subdomain.example.com은 Domain 속성이 .example.com 인 쿠키를 설정할 수 있습니다. RFC 2965는 이러한 쿠키가 example.com으로 전송되지 않는다고 명시 적으로 밝힌 것으로 보이지만 Domain = example.com을 설정하면 .example.com과 같이 점이 앞에 붙습니다. 예를 들어 example.com이 Domain = example.com으로 쿠키를 설정하면 쿠키를 다시 얻지 못한다고 말합니다. 맞지 않아요

누구나 규칙이 무엇인지 명확히 할 수 있습니까?


이 질문은 질문을 받았을 때 닫히고 마이그레이션 되었어야했지만 많은 주목을 받았기 때문에 닫는 대신 잠글 것입니다. 올바른 사이트에서 dupe에 대해서는 stackoverflow.com/questions/3089199/… 를 참조하십시오 .
Chris S

답변:


30

같은 RFC2109 에서 인용 :

       * Domain = .foo.com에 대한 요청 호스트 x.foo.com의 Set-Cookie는
         받아 들여지십시오.

그래서 subdomain.example.com위해 쿠키를 설정할 수 있습니다 .example.com. 여태까지는 그런대로 잘됐다.

       다음 규칙은 적용 가능한 쿠키 값을 선택할 때 적용됩니다.
       사용자 에이전트가 가진 모든 쿠키 중.

       도메인 선택
            오리진 서버의 완전한 호스트 이름은 도메인과 일치해야합니다.
            쿠키의 도메인 속성

도메인 일치가 있습니까?

   * A는 FQDN 문자열이며 NB 형식입니다. 여기서 N은 비어 있지 않은 이름입니다.
     문자열의 경우 B 형식은 .B '이고 B'는 FQDN 문자열입니다. (그래서 xycom
     .y.com과 일치하지만 y.com과는 일치하지 않습니다.)

그러나 이제 정의에 따라 example.com도메인이 일치하지 않습니다 .example.com. 그러나 www.example.com(또는 도메인의 다른 "빈 이름"). 이 RFC는 이론상 RFC2965 에 의해 폐기되었으며 , Set-Cookie2운영상 도메인의 주요 점을 강제하는 것에 관한 사항을 지시 했습니다.

@Tony가 지적한 것처럼 더 중요한 것은 실제 세계입니다. 실제 사용자 에이전트가 수행하는 작업을 살펴 ​​보려면

Firefox 3의 nsCookieService.cpp

크롬의 cookie_monster.cc

실제 사이트가 무엇을하고 있는지에 대한 관점를 들어, 함께 연주하려고 wget사용 --save-cookies, --load-cookies그리고 --debug무슨 일이 일어나고 있는지 볼 수 있습니다.

실제로 대부분의 사이트는 Set-Cookie구식 RFC 사양과 "호스트"값의 조합을 사용 합니다 (내장 된 점없이 ( twitter.com 과 같이 ) 또는 도메인 값 (선행하는 점으로) 설정 및 리디렉션 함). 같은 서버에 www.example.com(로 google.com는 않습니다).


그렇다면 www.example.com과 example.com (일반적으로 같은 사이트를 가리킴)은 어떻게 동일한 쿠키를 사용합니까? 최고의. 대부분의 브라우저에서는 필요하지 않습니다. 그렇지 않으면이 일반적인 사용법이 작동하지 않습니다.
JamesRyan

선행 점은 최신 RFC에 의해서만 강요됩니다. example.com은 "example.com"및 ".example.com"에 쿠키를 설정할 수 있습니다. 후자는 www.example.com에서 읽을 수 있습니다. 표시된 wget 명령을 사용하여 현재 상황을 확인하십시오.
메디나

@medina, 사용자 설정에서 쿠키를 할 수 x1.yz 하고 그것을 읽어 x2.yz ?
Pacerier

@Pacerier (1) 쿠키를 설정 y.z하고 (2) 사용자 에이전트가 RFC 6265를 구현하는 경우에만 해당
Michael Hampton

@MichaelHampton, 브라우저가 RFC 6265를 구현하지 않습니까?
Pacerier

2

브라우저가 현재 시점에서 수행해야 할 최신 브라우저 인 RFC 6265를 구현 하면 쿠키 세트에 .example.com선행 점이 무시되고 (섹션 5.2.3) 쿠키는 기본 도메인으로 전송됩니다. 하위 도메인.

구형 브라우저에서 많은 트래픽이 발생하는 경우이 동작에 의존하지 마십시오. 이 RFC는 2011 년으로 거슬러 올라갑니다.


1

가능하지 않아야합니다. 그러나 당신이 말했듯이, 이것은 널리 문서화 된 표준이 아니기 때문에 사용중인 소프트웨어에 달려 있습니다.

대부분의 최신 브라우저는 정의 된 "웹 보안 모델"을 준수합니다. 이 모델은 쿠키와 같은 항목 (특히 특정 웹 사이트로 다시 전송되는 방법)에 대한 보안 관련 브라우저의 동작을 효과적으로 관리합니다. 또한이 모델에는 "브라우저가 쿠키를 설정하지 않은 도메인 이름으로 쿠키를 보내지 않습니다"라는 규칙이 있습니다.

즉, domain.com은 js.domain.com에 쿠키를 설정할 수 있어야합니다. 그러나 js.domain.com은 자체 쿠키 만 설정할 수 있습니다. 그러나 이것은 사용중인 브라우저에 따라 다릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.