[ġ] ڵα ĺ

Ҵ   
   ȸ 157353   õ 0     õ 0    

웹브라우져에서 cookie를 조작할 수 있고,

cookie의 조작을 통해서 다른 사용자로 자동로그인을 하는 경우가 있습니다.


$key가 다르쟎아? 라고 하시겠지만,

javascript 등의 해킹을 통해서 key가 유출될 가능성도 있고

암호화 되기는 했지만 mb_id를 사용자의 pc에 남겨두는 것도 조금은 찜찜해서

확실하게 보안을 확보하기 위해서 자동로그인 기능을 변경했습니다.


사용자의 PC에는 임의의 값만 자동로그인 쿠키로 저장되며,

그것을 DB에서 가져와서 mb_id를 얻어서 자동로그인을 진행시킵니다.

key값도 DB에 들어 있기 때문에, 사용자의 key를 java script 등으로 가져갈 수도 없습니다.


어찌보면 불당팩의 편의성을 높이는 과정에서 자초한 측면도 있는 문제이지만

스마트폰에서 자동로그인이 풀리는 것을 막기 위해서 어쩔 수 없는 선택이었습니다. -..-;;;



개발에 참조한 자료

http://stackoverflow.com/questions/7591728/designing-a-secure-auto-login-cookie-system-in-php


* 상세한 코드는 불당팩의 해당파일을 참조하시기 바랍니다.


자동로그인이 check된 경우,

1) /bbs/login_check.php에서

ck_mb_id 쿠키를 임의의 난수로 생성한다

생성된 난수값을 g4_login_cookie 테이블에 저장한다

ck_auto에 키를 넣지 않게 때문에, 해당 코드는 삭제해 버립니다.


    // 불당팩 - unique한 값을 생성해 줍니다
    $uid = md5(uniqid($_SERVER[SERVER_ADDR], true));

    // cookie DB에서 key가 같은 경우를 모두 삭제해줍니다
    $sql = " delete from $g4[cookie_table] where cookie_key='$key' ";
    sql_query($sql);

    // 쿠키와 Key를 DB에 저장
    $sql = " insert into $g4[cookie_table] set cookie_name='$uid', cookie_value='$mb[mb_id]', cookie_key='$key', cookie_datetime='$g4[time_ymdhis]' ";
    sql_query($sql);

    set_cookie('ck_mb_id', $uid, 86400 * 31);


bbs/logout.php에서는 쿠키를 지워주고 db도 정리해줘야 합니다.


2) common.php에서

저장된 ck_mb_id 쿠키를 가져오고

그것을 가지고 g4_login_cookie 테이블의 mb_id 값을 읽어와서

자동로그인 id를 설정해준다.

ck_auto에 저장되는 $key는 g4_login_cookie에 저장되기 때문에, ck_auto는 더이상 쓰이지 않는다.


        // 불당팩 - 암호화된 쿠키값을 이용해서 mb_id를 가져온다
        $sql = " select * from $g4[cookie_table] where cookie_name='$tmp_mb_id' ";
        $mb_cookie = sql_fetch($sql);

        $tmp_mb_id = $mb_cookie['cookie_value'];
        $tmp_key = $mb_cookie['cookie_key'];

CREATE TABLE IF NOT EXISTS `g4_cookie` (
  `cookie_id` int(11) NOT NULL AUTO_INCREMENT,
  `cookie_name` varchar(255) NOT NULL,
  `cookie_value` varchar(255) NOT NULL,
  `cookie_key` varchar(255) NOT NULL,
  `cookie_datetime` datetime NOT NULL,
  PRIMARY KEY (`cookie_id`),
  UNIQUE KEY `cookie_id` (`cookie_id`),
  KEY `cookie_name` (`cookie_name`),
  KEY `cookie_datetime` (`cookie_datetime`)
)


- opencode.co.kr -
ƾ 2014-07
ʿ߾µ մϴ ^^


Page 11/28
2014-02   12911   Ҵ
2011-10   12880   Ҵ
2011-07   12852   Ҵ
2007-08   12763   Ҵ
2014-02   12721   Ҵ
2011-10   12674   Ҵ
2008-12   12638   Ҵ
2007-09   12629   Ҵ
2013-10   12623   Ҵ
2007-08   12572   Ҵ
2007-07   12549   Ҵ
2011-05   12528   Ҵ
2011-06   12505   Ҵ
2007-05   12470   Ҵ
2010-06   12421   Ҵ
2013-11   12339   Ҵ
2008-12   12270   Ҵ
2013-01   12168   Ҵ
2011-06   12155   Ҵ
2011-05   12151   Ҵ