1

주제: 새로설치한 태터툴스 1.1.1 버전 로그인이 안됩니다.

문제점:
새로 태터툴즈 1.1.1 expansion07 버전을 받아 제 로칼컴퓨터에 설치한후 로그인이 불가능하였습니다.

설치완료페이지까지는 완벽했습니다.
그러나 /tt/owner로 들어가서 로그인을 하면 제대로 아이디와 패스워드를 넣을경우 다시 로그인 페이지로 돌아옵니다.
아이디 패스워드가 잘못되었을 경우는 잘못되었다고 제대로 나오더군요.

글쓰기 버튼을 눌러도 동일한 현상이 납니다.


설치환경은

PHP 5.2.0 버전
mysql 4.1.22 버전
apache 2.0.59 버전으로 모두 윈도우용 버전입니다.

그리고 mysql 5.0 서버를 설치하였을경우 에러가 나는데 setup.php의 DB 테이블 생성과정에서 UserSettings 부분의 value 필드의 text가 default값을 가지지 못하는 mysql 에러가 납니다. default ''부분을 삭제하니 에러없이 설치가 가능하긴 했습니다.

어쨌든 로그인이 불가능하므로 아무런 기능을 사용할 수 없네요... 코드를 살펴보고 있는데 session의 문제가 아닌가 싶은데... 오늘 처음 다운로드 받아서 설치하는 것이어서 코드가 좀 생소하네요.


도움을 부탁드립니다.


P.S. 그리고 이것은 순수한 호기심에서 여쭤보고싶은데...
blog/login/index.php를 살펴보다 보니 세션아이디를 새로 랜덤함수로 설정하시더군요.. php의 세션체계가 문제가 있어서 랜덤함수로 세션아이디를 새로 만드시는건지 궁금합니다.  이렇게하면 보안에 문제가 있지 않나 해서요..

bgilyuh (2007-02-07 18:41:32)에 의해 마지막으로 수정

2

답글: 새로설치한 태터툴스 1.1.1 버전 로그인이 안됩니다.

임시방편으로 세션부분을 랜덤함수로 만든 것이 아닌 원래 php의 세션을 쓰도록 고치니 로그인이 가능하더군요.

php코드를 조금 고쳐 session id를 php가 생성한 것으로 다음과 같이 고치고
고치기전 :
$id=dechex(rand(0x10000000,0x7FFFFFFF)).dechex(rand(0x10000000,0x7FFFFFFF)).dechex(rand(0x10000000,0x7FFFFFFF)).dechex(rand(0x10000000,0x7FFFFFFF));
$result=mysql_query("INSERT INTO {$database['prefix']}Sessions(id, address, userid, created, updated) VALUES('$id', '{$_SERVER['REMOTE_ADDR']}', $userid, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())");
if($result&&(mysql_affected_rows()==1)){
    @session_id($id);
    header("Set-Cookie: TSSESSION=$id; path=/; domain={$service['domain']}");
    return true;
}
고친후 :
$result=mysql_query("update {$database['prefix']}Sessions  address='{$_SERVER['REMOTE_ADDR']}', userid='$userid', created=UNIX_TIMESTAMP(), updated=UNIX_TIMESTAMP() where id='".session_id()."'");
if($result&&(mysql_affected_rows()==1)){
    return true;
}
-----------------------
그후에 다음 몇줄을
------------------
session_set_save_handler('openSession','closeSession','readSession','writeSession','destroySession','gcSession');
session_cache_expire(1);
session_set_cookie_params(0,'/',$service['domain']);
if(session_start()!==true){
    header('HTTP/1.1 503 Service Unavailable');
}
------------------
setSession 의 isSessioinAuthorized 체크 이후에 넣었더니 로그인이 되네요.



**** 문제가 있는 부분으로 추정되는 곳---------
$id=dechex(rand(0x10000000,0x7FFFFFFF)).dechex(rand(0x10000000,0x7FFFFFFF)).dechex(rand(0x10000000,0x7FFFFFFF)).dechex(rand(0x10000000,0x7FFFFFFF));

...

@session_id($id);
header("Set-Cookie: TSSESSION=$id; path=/; domain={$service['domain']}");
----------------
위 부분이 문제인것 같습니다. 세션아이디를 마음대로 바꾸는것이 좀 찜찜했는데...
태터툴즈 개발자분들의 실험 및 수정 부탁드리네요... 아마 php 버전이 높아지면서 안되는것 같은데 이전 버전 php에서는 실험해 보지 못했습니다.
위의 코드는 전혀 에러체크를 하지 않았기때문에 세션아이디가 디비에 저장안되었을경우 에러날거에요.
어디까지나 임시코드니 실험후 수정부탁드립니다.

bgilyuh (2007-02-07 19:39:59)에 의해 마지막으로 수정