출처 : phpschool
글을 시작하기전에 아래 팁택 또는 여러 레퍼런스를 뒤지다보면 많은 자료가 있긴하지만
구현 방법에 대한 소스와 설명이 부족한거같아 예제를 같이 올려봅니다
물론 허접할수도있지만 조금이나마 도움이 됬으면 합니다
타도메인간 쿠키를 공유하기위해서는 4가지 방법을 제시하더군요
1. sso서버를 이용한 별도의 인증 절차를 거치는 방법
2. 프로그램단에서의 헤더파일을 이용하는 방법
3. 서버단에서 apache 를 제 컴파일하는방법
4. 데이터베이스를 이용하는 방법
물론 이외에도 꽁수를 쓰면 더 많은 방법이 있긴하겠지만
본 내용에서는 2번의 프로그램단에서의 헤더파일을 이용해 보겠습니다.
사실상 2번의겅우 소스의 구현방법이 에매해서 실패 확율이 가장 높았죠
먼저 구현 방법에앞서 몇가지 문제를 대한 요약을 하자면
첫째: 프레임 (아이프레임 포함) 방식에서 한페이지에서 각각의 프레임에 타도메인의
페이지를 호출하여 각기 쿠키를 구워주면 현제 속해 있는 서버이외의 다른 도메인
호출 부분 에서는 쿠키가 구워지지 않습니다
둘째: 아이프레임 방식이 아닌 풀페이지 변환이라면 아마 위의 헤더파일을 이요한 방법이
거의 무용지물이 아닐까 생각합니다 왜냐하면 다른 방법을 강구하는게 보안상에도
좋을테니까요
물론 위의 2가지 방법다 보안상으론 완벽하다 말할수는 없습니다--^
위의 문제를 안고 구현방법을 요약하자면
첫째 : 현제 도메인이 속해있는 서버에서 서로다른 두도메인의 쿠키를 한꺼번에 구워서
인식시킬수는 없다
(아마도 않된다고 하시는 분들은 대부분 이부분에서 오류를 격지 않으셨나
생각됩니다)
둘째 : 프레임이 처리된 페이지에서 각각 도메인이 호출되는 부분을 각도메인이 속해있는
서버상에서 쿠키가 구워지는 소스로 링크 처리해야한다
즉 한서버에서 모든 도메인을 구워주는것이 아니라 각각의 도메인이 속한 서버에서
각자 쿠키를 미리 구워주는 방법을 취해야 한다는거죠 어찌보면 정석이 아닌 꽁수라고
생각할수도 있지만 ..--^ 프로그램단에서 헤더를 이용하해서 동일 쿠키를 적용시키려면
방법이 있을까요?
아래의 실 소스를 가지고 테스트 해보겠습니다.
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
즉 ie6.0 이상에서 적용된 P3P 규약에 의해 브라우저에서 타 도메인의 쿠키 생성을 방지
하는 기능때문이죠
절대 주의 할점은 쿠키가 구워지는 곳과 사용되는곳에 모두 선언되어야 하며 어떤 헤더
보다도먼저 선언이 되어야 하겠죠?
------------------------------------
l ① www.aaa.com l
------------------------------------
l l
l ② www.bbb.com l <- 이곳을 아이프레임으로 처리했다
l l
------------------------------------
① 에 실제 본인이 속해 있는 회사의 서비스가 제공될예정이다
② 에 는 서비스될 타도메인의 페이지이다
[전체 페이지를 로딩하는 프레임 페이지]
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<iframe src="http://www.bbb.com/z2.html?SID=test_public_cookie" width="100%" height="100%" valign="top" frameborder="1" id="resume_dp_id" name="resume_dp" vspace="0" hspace="0" marginheight="0" marginwidth="0" scrolling="yes" align="center"></iframe>
</body>
</html>
이때 외부 도메인 뒤에 get 방식으로 쿠키 값을 넘기는걸 볼수있다 이부분을 엔코딩해서
넘겨서 받는 부분에서 다시 디코딩해서 쓴다거나 POST 방식으로 넘겨주면 그나마 보안
적 측면에서 도움이 되지 않을까 생각된다
[① 에 들어갈 페이지 소스]
걍 일반 쿠키굽듯이 구워주면된다
<?
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
$SID = "test_public_cookie";
setcookie("SID",$SID,0,"/",".bbb.com");
?>
② 에 들어갈 소스
1번소스
(쿠키를 사용해본 플그래머라면 쿠키함수가가 선언된 페이지에서는 쿠키가 적용되지
않는다는것을 알것이다 다음페이지로 넘겨서 쿠키가 생성됬는지 알아보자)
<?
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
setcookie("SID2",$SID,0,"/",".bbb.com");
?>
메타 테그를 이용하거나 자바스크립트 등으로 2번 소스로 토스해주면된다
2번소스
<?
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
echo"$SID2";
?>
그리고 세션의경우 쿠키처럼 클라이언트의 PC에 저장되지 않고 서버의 특정 경로에
저장된다는 것을 아는 플그래머라면 세션이 저장되는 경로를 원격지의 별도의서버로
마운트 시켜서 세션 정보를 저장하는 별도의 서버를 운영하면 되지 않을까하는
생각이 ㅎㅎㅎ
이방법은 저도 아직 써보지는 못했네요 기회가 되면 사용해보고 결과 올리도록하죠<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>
글을 시작하기전에 아래 팁택 또는 여러 레퍼런스를 뒤지다보면 많은 자료가 있긴하지만
구현 방법에 대한 소스와 설명이 부족한거같아 예제를 같이 올려봅니다
물론 허접할수도있지만 조금이나마 도움이 됬으면 합니다
타도메인간 쿠키를 공유하기위해서는 4가지 방법을 제시하더군요
1. sso서버를 이용한 별도의 인증 절차를 거치는 방법
2. 프로그램단에서의 헤더파일을 이용하는 방법
3. 서버단에서 apache 를 제 컴파일하는방법
4. 데이터베이스를 이용하는 방법
물론 이외에도 꽁수를 쓰면 더 많은 방법이 있긴하겠지만
본 내용에서는 2번의 프로그램단에서의 헤더파일을 이용해 보겠습니다.
사실상 2번의겅우 소스의 구현방법이 에매해서 실패 확율이 가장 높았죠
먼저 구현 방법에앞서 몇가지 문제를 대한 요약을 하자면
첫째: 프레임 (아이프레임 포함) 방식에서 한페이지에서 각각의 프레임에 타도메인의
페이지를 호출하여 각기 쿠키를 구워주면 현제 속해 있는 서버이외의 다른 도메인
호출 부분 에서는 쿠키가 구워지지 않습니다
둘째: 아이프레임 방식이 아닌 풀페이지 변환이라면 아마 위의 헤더파일을 이요한 방법이
거의 무용지물이 아닐까 생각합니다 왜냐하면 다른 방법을 강구하는게 보안상에도
좋을테니까요
물론 위의 2가지 방법다 보안상으론 완벽하다 말할수는 없습니다--^
위의 문제를 안고 구현방법을 요약하자면
첫째 : 현제 도메인이 속해있는 서버에서 서로다른 두도메인의 쿠키를 한꺼번에 구워서
인식시킬수는 없다
(아마도 않된다고 하시는 분들은 대부분 이부분에서 오류를 격지 않으셨나
생각됩니다)
둘째 : 프레임이 처리된 페이지에서 각각 도메인이 호출되는 부분을 각도메인이 속해있는
서버상에서 쿠키가 구워지는 소스로 링크 처리해야한다
즉 한서버에서 모든 도메인을 구워주는것이 아니라 각각의 도메인이 속한 서버에서
각자 쿠키를 미리 구워주는 방법을 취해야 한다는거죠 어찌보면 정석이 아닌 꽁수라고
생각할수도 있지만 ..--^ 프로그램단에서 헤더를 이용하해서 동일 쿠키를 적용시키려면
방법이 있을까요?
아래의 실 소스를 가지고 테스트 해보겠습니다.
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
즉 ie6.0 이상에서 적용된 P3P 규약에 의해 브라우저에서 타 도메인의 쿠키 생성을 방지
하는 기능때문이죠
절대 주의 할점은 쿠키가 구워지는 곳과 사용되는곳에 모두 선언되어야 하며 어떤 헤더
보다도먼저 선언이 되어야 하겠죠?
------------------------------------
l ① www.aaa.com l
------------------------------------
l l
l ② www.bbb.com l <- 이곳을 아이프레임으로 처리했다
l l
------------------------------------
① 에 실제 본인이 속해 있는 회사의 서비스가 제공될예정이다
② 에 는 서비스될 타도메인의 페이지이다
[전체 페이지를 로딩하는 프레임 페이지]
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<iframe src="http://www.bbb.com/z2.html?SID=test_public_cookie" width="100%" height="100%" valign="top" frameborder="1" id="resume_dp_id" name="resume_dp" vspace="0" hspace="0" marginheight="0" marginwidth="0" scrolling="yes" align="center"></iframe>
</body>
</html>
이때 외부 도메인 뒤에 get 방식으로 쿠키 값을 넘기는걸 볼수있다 이부분을 엔코딩해서
넘겨서 받는 부분에서 다시 디코딩해서 쓴다거나 POST 방식으로 넘겨주면 그나마 보안
적 측면에서 도움이 되지 않을까 생각된다
[① 에 들어갈 페이지 소스]
걍 일반 쿠키굽듯이 구워주면된다
<?
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
$SID = "test_public_cookie";
setcookie("SID",$SID,0,"/",".bbb.com");
?>
② 에 들어갈 소스
1번소스
(쿠키를 사용해본 플그래머라면 쿠키함수가가 선언된 페이지에서는 쿠키가 적용되지
않는다는것을 알것이다 다음페이지로 넘겨서 쿠키가 생성됬는지 알아보자)
<?
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
setcookie("SID2",$SID,0,"/",".bbb.com");
?>
메타 테그를 이용하거나 자바스크립트 등으로 2번 소스로 토스해주면된다
2번소스
<?
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
echo"$SID2";
?>
그리고 세션의경우 쿠키처럼 클라이언트의 PC에 저장되지 않고 서버의 특정 경로에
저장된다는 것을 아는 플그래머라면 세션이 저장되는 경로를 원격지의 별도의서버로
마운트 시켜서 세션 정보를 저장하는 별도의 서버를 운영하면 되지 않을까하는
생각이 ㅎㅎㅎ
이방법은 저도 아직 써보지는 못했네요 기회가 되면 사용해보고 결과 올리도록하죠<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>
게시글 목록
| 번호 | 제목 |
|---|---|
| 10853 |
JavaScript
속도를 위해 데이터를 접속자 메모리에
|
| 10852 | |
| 10850 | |
| 28848 | |
| 10849 |
JavaScript
백그라운드에음악걸기
|
| 28847 |
HTML
배경에 그림스타일지정
|
| 10846 |
기타
메신저형식의광고
2
|
| 28846 |
HTML
많이 쓰이는 자바스크립트
|
| 10845 | |
| 28845 |
HTML
마우스로 이미지크기 변경하기
|
| 10844 |
JavaScript
도메인 주소에 자동으로 www 붙이기 (php)
|
| 28844 |
HTML
다음부동산매물스크립트1
|
| 28843 |
HTML
다음부동산매물스크립트
|
| 10843 |
JavaScript
다각형이미지슬라이드쇼(익스네츠)
|
| 28842 |
HTML
날짜 형식 입력 받은 값 확인하기
|
| 10842 | |
| 28841 |
HTML
그림클릭시 레이어 띄우기
|
| 10841 |
MySQL
그림을 디비에 저장하는 방법
|
| 28840 |
HTML
그림 앨범 스크립트
|
| 28839 |
HTML
간단한 팝업오브젝트 예제
|
| 10840 |
JavaScript
가운데 정렬된 홈페이지에서 따라다니는 레이어
|
| 10839 | |
| 24791 | |
| 24789 | |
| 10836 |
기타
외부 링크 막기
2
|
| 28838 | |
| 24788 | |
| 24787 | |
| 24786 |
계약서
농지임대차계약서
|
| 28837 | |
| 28834 |
HTML
URL옆에 뜨는 숏컷아이콘만들기.
2
|
| 10835 |
JavaScript
클릭시 펼쳐지는 메뉴
|
| 10834 |
정규표현식
수수료계산
|
| 28833 |
HTML
기본적인 페이징
|
| 28829 |
HTML
만 19세 확인하기
3
|
| 10833 |
JavaScript
IE에서 쓰는 CSS filter 사이트 소개
|
| 10831 | |
| 10830 | |
| 10829 |
JavaScript
iconv 함수 사용시 일부 글자가 변환되지 않는경우
|
| 28828 |
HTML
금액에 점찍고 한글 표시하기
|
| 10828 | |
| 10827 |
MySQL
mysql link 추가로 만들기
|
| 10823 | |
| 10822 |
기타
[펌] SAMBA 설정
|
| 10821 |
JavaScript
1-1000 까지 누락된 숫자 구하기
|
| 10820 | |
| 28822 |
HTML
간단하게 만들어본 프레임워크
5
|
| 10814 | |
| 10812 |
Flash
vr기능-도와주셈
1
|
| 10811 | |
| 10810 |
JavaScript
mod_cband 간단 정리
|
| 10808 |
Flash
간단한 플래시 보완패치입니다.
1
|
| 10804 |
JavaScript
cs..cs2 버젼...윈도우즈 탐색기프리뷰 패치(psd,ai)...
3
|
| 10797 | |
| 28821 |
HTML
IeTagConvertor
|
| 10796 | |
| 10795 |
JavaScript
ncftp 서브 디렉토리 포함 모두 전송
|
| 10794 |
JavaScript
테이블 각 row 마우스오버시 색깔바꾸기
|
| 10792 | |
| 10789 |
MySQL
apache - mod_ssl 설치하기
2
|
| 10785 | |
| 10781 | |
| 10780 |
정규표현식
자바스크립트 이메일 체크 함수
|
| 28820 |
HTML
PHP에서 홈페이지 주소 검사
|
| 10776 |
PHP
문자셋(인코딩 바꾸는 팁
3
|
| 10769 |
JavaScript
당장써먹어야 할 팁) 앞으로 gif는 물러가고 png시대가 될거 같네요
6
|
| 10766 |
JavaScript
full-down메뉴[펌]
2
|
| 10765 |
JavaScript
플래쉬 무비 전체 화면으로 뜨게 하는 fscommand
|
| 10758 |
JavaScript
코딩시 테이블을 줄입시다.
6
|
| 28818 | |
| 10754 |
JavaScript
모든 폰트 설정 한번에 바꾸기(식별자 *의 사용법)
3
|
| 10753 | |
| 10750 | |
| 28817 |
HTML
자바스크립트에서 변수 없애기
|
| 10749 | |
| 10748 | |
| 10747 | |
| 10746 |
JavaScript
[소개]윈도우 미디어 플레이어 - 컨트롤 버튼
|
| 10740 |
JavaScript
iframe사용시 높이 자동 조정
5
|
| 10738 |
Flash
플래시 무비에 레이어 올리기
1
|
| 10735 |
JavaScript
도움말 띄우기 - 관리자 페이지에 있는 것을 추림
2
|
| 10734 | |
| 28812 | |
| 10730 | |
| 10726 | |
| 10725 |
기타
자바스크립트 기초문서
|
| 28811 | |
| 10724 |
JavaScript
숫자를 한글로 변환하기
|
| 10723 |
JavaScript
디렉터리 파일 찾기 순서 DirectoryIndex
|
| 10722 | |
| 10721 | |
| 10717 | |
| 10716 |
기타
Apache 보안 팁
|
| 10715 |
JavaScript
문서루트 위치 DocumentRoot
|
| 10713 |
Linux
lilo.conf
1
|
| 10712 | |
| 10711 | |
| 10710 |
JavaScript
웹 서버가 기다리는 포트(Port)
|
| 10709 |
JavaScript
logrotate.conf의 설정및 옵션에 대한 설명
|
| 10708 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기