2012-06-11 8 views
5

현재 앱 도메인 이름이 아닌 다른 도메인에서 쿠키를받을 수 있습니까?크로스 도메인 쿠키 레일 3

다른 웹 사이트의 api에 액세스하는 응용 프로그램을 구축 중입니다. 사용자가 이미 다른 사이트에서 로그인 한 경우 브라우저는 해당 도메인 이름으로 쿠키를 만듭니다. 예를 들어 www.example.com에 로그인 한 사용자는 브라우저에 www.example.com 도메인 아래에 cookies['token'] 쿠키를 저장합니다. 사용자가 내 웹 사이트 www.mywebsite.com을 방문하면 어떻게하면 www.example.com에서 쿠키를 얻을 수 있습니까?

도움이 매우 감사합니다.

+2

기본적으로 : 할 수 없습니다. 도메인이있는 쿠키의 요점은 브라우저가 현재 도메인에 속한 쿠키 만 전송한다는 것입니다. 다른 말로하면, 귀하의 도메인에 속하지 않는 쿠키를 읽는 방법을 찾으면 보안 취약점을 발견하게됩니다. – Flambino

+0

예, 저는 며칠 동안 인터넷 검색을 해왔고, 저는 당신과 정확히 같은 대답을 많이 발견했습니다. 대단히 감사합니다. –

답변

4

이 작업을 수행 할 수 있지만 클라이언트, 웹 사이트 및 다른 웹 사이트 모두가 함께 작동해야합니다. 사이트 A에 인증하는 방법을 알고있는 클라이언트가 있습니다. 사이트 B를 사이트 A에 대해 인증하는 방법을 알고있는 사용자로보고 싶습니다. 이 작업을 수행하는 기본 방법은 클라이언트가 사이트 A에 접속하고 자체를 인증하고 사이트 B가 신뢰할 수있는 사이트 A에서 토큰을 얻은 다음 해당 토큰을 사이트 B에 전달하는 것입니다.

효과적으로 OpenID 또는 OAuth의 매우 구체적인 경우. 이것은 가능하지만 가능하면 www.example.com을 약간 변경해야합니다. 네가 이렇게 할 수 있다면, 좋을거야.

OAuth에 대한 모든 내용을 읽어보십시오. 정확히 할 필요는 없지만 할 일을 설명하는 데 도움이됩니다. http://hueniverse.com/oauth/

+0

이렇게하려면 사이트를 모두 열어야합니까? 또는 사이트 1에서 사이트 2로 연결되는 링크? –

+0

후자입니다. 사이트를 효과적으로 연결해야합니다. 사이트 A가 LiveJournal과 같은 사이트이고 사이트 B가 스택 오버플로와 같은 사이트 인 경우를 상상해보십시오. 이 문제를 해결하는 것과 같은 방법으로 LiveJournal 계정을 사용하여 Stack Overflow에 로그인 할 수 있습니다. 사이트 B에서 "로그인"한다고 가정하십시오. 사이트 A로 리디렉션합니다. 사이트 A는 인증 쿠키를 확인한 다음 사이트 B로 리디렉션하고 서명 된 "이 사용자를 사용자 X로 인증"매개 변수를 포함합니다. 사이트 B는 인증을 인식하고 사이트 B에 로그인합니다. 함께 작동합니다. –

+0

네, 무슨 뜻인지 알았어요. 그것은 OpenID라고하지만 사이트 A는 이런 종류의 서비스를 제공하지 않지만 자체 로그인 화면이 있습니다. 사용자가 사이트 A를 방문하면 브라우저가 쿠키를 만들고 사용자가 사이트 B를 방문하면 사이트 B가 사이트 A에 생성 된 쿠키에 액세스하기를 원합니다. 그렇게 할 수 있습니까? –

1

도메인의 서로 다른 하위 도메인간에 쿠키를 공유 할 수 있지만 여러 도메인 이름에 쿠키를 공유 할 수는 없습니다. .

쿠키는 BROWSER에 저장되며 브라우저는 외부 도메인 이름의 쿠키에 액세스하거나 쿠키를 저장할 수 없습니다. 브라우저가 당신에게 이것을 허용했다면 엄청난 보안 결함 일 것입니다.

그러나 도메인 이름간에 서버에 저장된 세션 데이터를 공유 할 수 있습니다. 이것은 거의 사소한 것은 아니지만 세션 정보가 SERVER에 저장되어 있으므로 필요에 따라 응용 프로그램간에 서버의 정보에 액세스 할 수 있습니다. 세션 데이터가 데이터베이스에 저장된 경우 두 도메인 모두에 데이터베이스 액세스 권한을 부여하는 것만으로 필요한 것입니다. 필요한 경우 실제로 외부 도메인 이름으로 데이터베이스를 열고 서버의 데이터베이스에 외부 도메인을 직접 연결할 수 있습니다.