2011-06-14 4 views
3

www.domain.com에 사이트를 설정하면 사이트에서 사용자를 인증하고 쿠키에 자격 증명을 유지할 수 있습니다.다른 하위 도메인에서 인증 (모두는 아님)

경우에 따라 사용자는 다른 하위 도메인의 다른 서버에 설정된 처리기에 액세스합니다. handlers.domain.com

내가 (쿠키 다른 하위 도메인에 사용할 수 없습니다한다) 와일드 카드 하위 도메인 쿠키를 사용하는 것을 여유가있을 수

지금까지 액세스 제어까지에 대한 내 솔루션 handlers.domain.com에 사용되는 모든 URL이에 GUID 특정 있다고했다 사용자. 다른 사이트의 핸들러는 guid 소유자의 신원을 가정합니다. 이것은 물론 좋은 보안 관행이 아닙니다.

내가 대체 솔루션에 대해 생각했다 : handlers.domain.com에 대한 모든 링크는 실제로 다음이 직접으로 액세스 된 것을 확실히 알 수 handlers.domain.com에 URL을 각인 암호화 된 시간으로 리디렉션됩니다 www.domain.com에 리디렉터 스크립트에 대한 링크 될 것입니다 인증 된 리다이렉션은 www.domain.com입니다. 이 솔루션은 GET 시나리오에서 제대로 작동하지만 POST 데이터를 예상하는 처리기로 실패합니다. (업로드 한 파일은 최대 업로드)

누구든지 더 좋은 솔루션을 생각하거나 내 솔루션에 대한 통찰력이 있습니까?

(이 경우에는 내가 ASP.NET을 사용하고 있지만,이 솔루션은 아마 플랫폼 불가지론 될 것입니다, 그래서 다양한 웹 플랫폼이 태그 것)

감사합니다!

답변

1

쿠키를 사용하여 세션 (요청 그룹)을 설정하지 않으려면 다른 방법을 찾아야합니다. 쿠키의 정보가 HTTP 요청 내에서 읽을 수 있도록 전달되므로 POST 요청의 일부로 해당 특정 요청에 대한 정보가 전달되는 경우 문제가 표시되지 않습니다.

GET 요청을 선호하는 경우 리다이렉션 이전에 사용자 서버 측 세션 내에 플래그를 추가하여 리디렉션 대상인 서버에 요청의 유효성을 확인할 수있는 가능성을 부여합니다 -측면.

+0

첫 번째 하위 도메인에서만 세션을 설정합니다. 아마도 이것은 순수한 ASP.NET 문제입니다. POST 요청으로 sessionId를 게시하고 다른 도메인의 세션에 "가입"할 수 있습니다. (중앙 DB 세션 관리를 사용합니다.) 이것이 가능할 수 있는지 확신하지 못합니다. 그러나 ASP.NET에서 완료 – Variant

+0

기본 세션 모듈을 재정의해야 할 수도 있지만 가능할 수도 있습니다. – jdc

+0

세션은 단순히 내 대답에서 광범위한 용어로 사용되었습니다. 예를 들어 데이터베이스에 해당 플래그를 배치 한 다음 사용되는 "세션 모듈"유형에 관계없이 다른 서버의 데이터베이스에서 해당 플래그를 쿼리 할 수 ​​있습니다.데이터 서버 측만 전달하여 요청이 유효한지 확인하십시오. 암호화를 사용하는 경우 서버 측 비밀 키를 공유하게됩니다. 그러나 암호화를 사용하면 자신이하는 일과 비밀 키가 변조되거나 분실 된 경우 어떻게 행동해야 하는지를 알아야합니다. "세션"(두 서버간에 공유 스토리지)을 사용하면 각 요청에 대해 하나의 "비밀"을 갖게됩니다. – hakre

0

"와일드 카드 하위 도메인 쿠키를 사용할 여유가 없습니다 (다른 하위 도메인에는 쿠키를 사용할 수 없어야 함)"라고 말했습니까? 돈을 지불 할 여력이 없다거나 사용자가 모든 하위 도메인에 액세스하지 못하도록하고 싶습니까? 두 번째 경우에도 사용자의 ID로 암호화 된 값을 입력하고 하위 도메인의 액세스 권한과 비교하여 하위 도메인 쿠키를 계속 사용할 수 있습니다. 따라서 URL 수준보다 보안이 강화 된 서버에서 모든 것을 유지할 수 있습니다. 잠재적 해커가 과거에 얻을 수있는 유일한 방법은 다른 사용자의 ID를 추측하여 올바르게 암호화하는 방법입니다.

+0

하위 도메인 당 쿠키 당 10 달러를 지불하므로 다소 비쌉니다 ... (농담) – Variant

+0

와일드 카드 도메인 쿠키를 사용하지 않는 이유는 다른 하위 도메인 서버가 준비, 개발 및 데모 버전이기 때문입니다. 사이트와 나는 쿠키가 섞이길 원치 않는다. – Variant

관련 문제