2012-09-11 2 views
8

나는 별도의 웹 서비스에 로그인하여 고객 데이터를 검색하는 웹 사이트 (A)를 만들었습니다.두 웹 사이트간에 쿠키 공유

(A)를 소유 한 조직에는 웹 양식이있는 웹 사이트 (B)도 있습니다. 그들은 (A)에 로그인 한 고객이 (B)를 클릭하여 세부 정보가 들어있는 미리 채워진 양식을 볼 수있게하려고합니다.

이것은 (A)가 고객 ID를 (B) 읽을 수 있고 (B) 웹 서비스에서 데이터를 요청하고 양식을 미리 채울 수 있어야한다는 것을 의미합니다.

  1. 수 웹 사이트 (B)의 웹 사이트 (A)에 대한 쿠키를 읽어

    이 두 가지 질문을 제기?

  2. 누군가가 쿠키를 편집하지 못하도록하고 양식의 다른 사용자 데이터를 보지 못하게하려면 (A)에서 쿠키를 암호화 한 다음 (B)에서 암호를 해독해야합니다 (모든 제안 사항). 이 줄에?

웹 서비스가 여러 다른 사이트에서 사용되므로 기존 로그인을 OAuth 또는 다른 것으로 변경할 수 없으므로 변경할 수 없습니다.

답변

12

번호 웹 사이트 B는 웹 사이트 A.

에서 쿠키를 읽을 수있는 가장 쉬운 해결 방법 웹 사이트 B에 웹 사이트 A에서 로그인/자격 정보를 전달 및 웹 사이트 B는 별도의 쿠키를 설정하는 것입니다. 예를 들어 웹 사이트 A에 로그인 한 후 암호화 된 쿼리 문자열을 사용하여 웹 사이트 B로 리디렉션 할 수 있습니다. 그런 다음 웹 사이트 B는 정보를 읽고 쿠키를 설정하고 사용자를 사이트 A로 리디렉션 할 수 있습니다.

지저분하지만 가능합니다.

+0

감사 크리스. 문제는 그들이 어떤 활동을하고 그들이 아니지만 사이트 A의 링크를 통해, 어떤 점에서 B로 이동 수 그들이에 로그인 A에서 B로 이동하려는 나타냅니다에는 "사용자 작업은"없다이다. 하위 도메인과 동일한 도메인에있는 두 사이트를 가질 수도 있습니다. 그럴 가능성이 있니? 로그인 후 웹 사이트 B에 신속하게 사용자를 리디렉션 할 수있는 경우 – Sean

+0

, 그들은 (쿠키가 지속하면서) 미래에 언제든지 웹 사이트 B를 방문하여 사용 가능한 정보를 가질 수있다, 다시 리디렉션 다음 거기에 쿠키를 설정합니다. –

+0

죄송합니다, 내가 먼저 읽기에 두 번 리디렉션 보지 않았다. 이게 나에게 선택권을 주는데, 고마워. – Sean

0

인터넷에서이를 수행 할 수있는 오픈 소스 도구가 있지만 쿠키 철학에 대한 전반적인 생각에 반하는 것입니다. 쿠키는 하나의 도메인에서만 액세스 할 수 있습니다. 그러나 해당 도메인을 조롱하고 브라우저에 '해킹'할 수 있습니다. 그것은 권장되지 않으며 일부 브라우저는 보안이 강화되어 허용되지 않습니다.

웹 사이트 A에서 웹 서비스를 만들고 B에 읽기 액세스 권한을 부여하여 읽는 것이 좋습니다.

1

쿠키는 설정된 단일 도메인에서만 액세스 할 수 있습니다.

동일한 도메인에서 두 개의 하위 도메인을 사용하는 경우 쿠키를 공유 할 수 있지만 브라우저는 한 도메인에 설정된 쿠키를 다른 도메인으로 보내지 않습니다.

편집 : 또한 쿠키에 많은 양의 데이터를 저장하지 않아도됩니다. 사이트 B가 자바 스크립트로 쿼리 할 수있는 API를 만들 수있는 가능성이 있습니까?

8

동일한 회사가 두 사이트를 소유하고 있다고하셨습니다. 의심스러운 것처럼 사이트의 www.mycompany.com 및 store.mycompany.com과 같은 도메인이 있으면 쿠키를 공유 할 수 있습니다. HTTP 응답 헤더는 다음과 같이 보일 것입니다 : 클라이언트가이 데이터에 직접 액세스 할 수있는

Set-Cookie: user_id=1295214458; Path=/; Domain=.mycompany.com 

때문에, 당신은 또한 서명 그렇게 감지 될 변조 포함해야한다. 일반적으로 모든 것은 암호화되어 "토큰"으로 서명되며 쿠키로 설정됩니다. 그러나 기술적으로는 서명 만 필요합니다.

3

모든 사용자가 HTML5를 지원하는 브라우저를 사용하는 경우 addEventListener 한쪽에 허용하고 postMessage 다른 쪽에서 window.postMessage 방법을 사용할 수 있습니다. 다음은 좋은 기사/예입니다 : https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage.

는 그 다음 단계는 간단하다 :

  1. 사이트에 추가
  2. 은 쿠키의 사용 window.postMessage
  3. 저장소에받은 쿠키를 B의 쿠키를 보낼 사이트 B에 숨겨진 iframe을
1

잠재적 해결 방법 : 보조 사이트에서 인라인 프레임을 사용하여 기본 사이트의 콘텐츠를 표시 할 수 있습니다 (전체 창을 차지함) :

(210)
<!DOCTYPE HTML> 
<html> 
    <head> 
     <title>your page title</title> 
     <style type="text/css"> 
      body, html { 
      margin: 0; padding: 0; height: 100%; overflow: hidden; 
      } 
      #content { 
      position:absolute; left: 0; right: 0; bottom: 0; top: 0px; 
      } 
     </style> 
    </head> 
    <body> 
    <div id="content"> 
    <iframe width="100%" height="100%" frameborder="0" src="http://yourMainSite.com/dataDependentPage.php" ></iframe> 
    TESTING 
    </div> 
    </body> 
</html> 
관련 문제