서브도메인 세션공유가 안되어야 하는데 되어서 문의합니다.
본문
example.com
sub1.example.com
sub2.example.com
이렇게 구성이 되어있습니다.
example.com, sub1.example.com은 서로 세션이 공유되어야 하고요
sub2.example.com는 세션이 공유되면 안됩니다.
현재
example.com, sub1.example.com는 공유가 잘 됩니다. 허나
example.com, sub2.example.com는 세션이 공유가 안되는데
sub1.example.com에서 로그인하면 sub2.example.com가 로그인 됩니다.
sub1.example.com에서 로그아웃 해도 sub2.example.com가 로그아웃 안됩니다.
sub2.example.com에서 로그인해도 sub1.example.com에 로그인 안됩니다.
희한하게 동작하더라고요
sub2.example.com에서는 세션공유를 안하려고 세션저장폴더를 바꿔서 사용합니다.
example.com, sub1.example.com의 설정은 아래와 같이 동일합니다.
config.php
define('G5_COOKIE_DOMAIN', '.example.com');
common.php
// 세션파일 저장 디렉토리를 지정할 경우
//session_save_path(G5_SESSION_PATH);
=============================================
sub2.example.com
config.php
define('G5_COOKIE_DOMAIN', '');
common.php
// 세션파일 저장 디렉토리를 지정할 경우
session_save_path(G5_SESSION_PATH);
답변 3
세션쿠키이름 충돌방지
// sub2.example.com 설정
session_name('sub2_session');
이렇게 되어 있는지 확인해 보신후 설정이 제대로 되어 있는데도 적용이 안되신다면, 다음 사항을 체크해 보세요
php 세션 살정 확인
PHP의 session.cookie_secure 및 session.cookie_httponly 설정이 서로 다른 서브도메인 간에 일관되게 설정되어 있는지 확인해 보세요
!-->이것 머리아파요 골아프죠..
정말 꼼곰하게 하나씩 체크해야합니다. 또한 이게 어느 한부분만 틀려도 정말 뒤죽박죽됩니다.
일단 제일 먼저 같은 프로토콜을 사용해야합니다. 서로 다른 프로토콜은 웹표준 보안상 않되게 되어있습니다. 설령 된다해도 정상적이 지가 않아요 뒤죽박죽됩니다.
예를 들어보죠 한쪽은 http 고 또한쪽은 https 라고한다면 이건 성립이 않된다는거죠. 서로 보안상 공유가 않됩니다. 도메인또한 맞찮가지입니다. 서브도메인이면 서브도메인끼만 된다는것 참고하시면되겠습니다. 모두 웹표준 보안상 브라우저가 허용하지않습니다.