CI 묻고 답하기

제목 tank_auth와 플래시 업로드
글쓴이 룬룬 작성시각 2009/08/08 11:29:51
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 31211   RSS
하다하다 안되어 질문을 올려봅니다.

국내 프리웨어로 올라와있는 NfUpload 를 사용하고 있습니다.
로그인은 Tank_Auth를 사용하고 있고요.

로그인을 하면, 세션정보가 유지되면서 로그인 상태가 유지됩니다.
어느 페이지를 이동하여도 마찬가지죠.

이 상태에서 플래시 swf에서 업로드를 하게 되면 로그인세션이 풀려버립니다.
(업로드를 받는 곳도 ci입니다.)

강제로 세션을 유지시키거나 도움될만한 팁을 알 수 있을까요?

요약하면,
플래시(swf)를 통해 ci에 접근을 하게 되면 로그인 세션이 풀려버리는 문제입니다.

참고로 크롬에서는 이러한 문제가 발생하지 않습니다. 
IE6, IE8에서는 모두 발생하네요.
 
 다음글 CI 와 fckeditor를 이용해서 게시판 만들기 중... (2)
 이전글 한국 개발자 포럼 ... 공개개발자 문의. (3)

댓글

ci세상 / 2009/08/08 23:54:59 / 추천 0

1. 호스팅 서버가 아니시라면 아래 세팅부분을 1로 변경해보세요.
 php.ini > session.auto_start = 0

2. 만약 위의 문제가 아니라면
- 소스중 > header 부분을 주석처리후 재 테스트
- 설정파일에서 인코딩 부분 재점검


이래도 같은 증상이 발생하면 ~~ 패스코리아에 문의를 함 해보면 좋을것 같습니다. ^^

룬룬 / 2009/08/09 00:54:18 / 추천 0
 자답입니다.
CI의 세션처리에서 보안을 신경써서 그런지 user-agent 부분을 분석하는 곳이 있었습니다.
config에서 session으로 검색하시면 나오고요. 브라우져가 접속해 있었는데, 갑자기 플래시로 치고 들어가니 차단해버렸나봅니다. 일단은 뾰족한 대안이 없어 FALSE로 놓고 작업을 진행하였습니다. :)
ci세상 / 2009/08/09 09:49:17 / 추천 0
		// Does the User Agent Match?
		if ($this->sess_match_useragent == TRUE AND trim($session['user_agent']) != trim(substr($this->CI->input->user_agent(), 0, 50)))
		{
			$this->sess_destroy();
			return FALSE;
		}
말씀하신 CI 세션부분이 이렇게 되어 있는데요 user_agent라는 부분이 사용자의 User Agent 정보(브라우저 정보 문자열에서 첫 50글자) 이정보를 담아두었는데요 ~~ 세션을 담을 시점에 브라우저 정보가 ~~ 플래쉬에 의해서 강제로 변경되었다? 이렇게 추측이 될것 같습니다. 플래쉬 소스의 header 정보를 지우고 다시한번 테스트 해보세요 ^^

CI 세션 브라우저 정보 체크는 보안보다는 기본이라서 TRUE가 맞는것 같습니다. ^^

ps / 아니면 user_agent 를 비교해 보셔서 플래쉬 사용 이전과 비교해서 어떤것이 변화되는지 확인해보시는것도 좋은 방법이겠네요^^
마냐 / 2009/08/10 22:59:38 / 추천 0
http://codeigniter.com/forums/viewthread/72146/

Haha you just gota love it, if I make ‘sess_match_useragent’ = FALSE then IE6 is fine but IE7 isn’t :O

IE6은 되나 IE7은 똑같다? 라고 하는 것 같읍니다.

http://blueb.net/blog/1393">http://link.allblog.net/16597835/http://blueb.net/blog/1393
CaKePHP에서 해결방법인데 어떻게 응용을 해야할지...
session_start(); 만 하면 안되더군요.

http://codeigniter.com/forums/viewthread/97399/